gpt4 book ai didi

json - 如何保存 MongoDB 查询并在之后运行它?

转载 作者:可可西里 更新时间:2023-11-01 10:02:34 25 4
gpt4 key购买 nike

我正在应用程序 A 中安装 MongoDB 查询。例如:

const query = { country: new ObjectId(""), age: { $gte: 25 } }
// save contents of 'query'

...我想将它保存在 de DB 中并让 Application B 运行它:

// const query = read object from the database
db.collection('foo').find(query).toArray()...

我想现在将它保存在mongo中,并在以后检索它运行。但是 MongoDB 不允许我保存具有 $gte 值的文档。我已经尝试过 JSON.stringify(query),将结果字符串保存在数据库中(好的!),然后在另一端解析它。

然后,遇到 ObjectId 像这样被字符串化的问题:

{
"class" : "org.bson.types.ObjectId",
"counter" : 9053980.0,
"date" : "2015-04-01T19:24:39Z",
"machineIdentifier" : 14987412.0,
"processIdentifier" : 29601.0,
"time" : 1427916279000.0,
"timeSecond" : 1427916279.0,
"timestamp" : 1427916279.0
}

解析的 JSON 不是有效的 ObjectId。它只是一个 JS 对象。

如何保存 MongoDB 查询并将其解析为 mongo 将再次接受的对象?

最佳答案

使用MongoDB Extended JSON module

我们不应该将 MongoDB 对象字符串化和解析为纯 Javascript 对象。

要解析 MongoDB 对象,我们必须使用 Mongodb-Extended-JSON 模块。由于有些类型无法解析为纯JSON,Mongo将其对象翻译为特殊的JSON(扩展JSON)。

解决方案

关于应用程序 A:

const EJSON = require('mongodb-extended-json')
const query = { country: new ObjectId(""), age: { $gte: 25 } }
const strQuery = EJSON.stringify(query)
// { "country": { "$oid": "5422c2e6e4b02fd68a01225c" }, "age": { "$gte": 25 } }

关于应用程序 B:

const EJSON = require('mongodb-extended-json')
const query = EJSON.parse(strQuery)
const query = EJSON.stringify(query)
// query is now a MongoDB Object that can be used on db.collection('foo').find(query)

关于json - 如何保存 MongoDB 查询并在之后运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com