对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

EJSON.deserialize()

EJSON.deserialize()方法将扩展 JSON 对象转换为 BSON 对象。

该方法的语法如下:

EJSON.deserialize( object, [ options ] )

该方法采用以下字段:

字段
类型
必要性
说明

object

EJSON 对象

必需

要转换的 EJSON 对象。 例如,文档数组。

options

字符串

Optional

修改输出对象类型。 唯一的选项是{ relaxed: <boolean> } 。

布尔值
说明

true

返回纯 JavaScript Realm 对象类型。默认值为true 。

false

返回BSON对象类型。

您可以从交互式EJSON.deserialize() mongosh会话或使用 从系统命令行运行--eval 。

要从交互式mongosh会话运行EJSON.deserialize() ,请使用:

EJSON.deserialize( object, [ options ] )

要从系统命令行运行EJSON.deserialize() ,请使用:

mongosh --eval "EJSON.deserialize( object, [ options ] )"

创建 sales 集合:

db.sales.insertMany( [
{ custId: 345, purchaseDate: ISODate("2023-07-04"),
quantity: 4, cost: Decimal128("100.60") },
{ custId: 346, purchaseDate: ISODate("2023-07-12"),
quantity: 3, cost: Decimal128("175.45") },
{ custId: 486, purchaseDate: ISODate("2023-08-01"),
quantity: 9, cost: Decimal128("200.53") }
] )

以下部分展示如何创建示例文件,然后使用EJSON.deserialize()示例导入该文件。

以下示例以大量形式检索sales文档,并将结果保存到计算机文件系统上名为salesDeserialize.json的文件中:

let salesCollection = EJSON.stringify( db.sales.find().toArray() )
fs.writeFileSync( 'salesDeserialize.json', salesCollection )

要导入salesDeserialize.json文件并创建名为salesFromDeserializeFile的新collection,请退出mongosh ,然后从命令行运行此示例:

# Note: The example is formatted to fit the page.
mongosh --quiet --eval "db.salesFromDeserializeFile.insertMany( \
EJSON.deserialize( JSON.parse ( \
fs.readFileSync( 'salesDeserialize.json', 'utf8' ) ) ) )"

在示例中:

  • fs.readFileSync() 读取salesDeserialize.json文件并将内容解释为utf8 Unicode 字符串。

  • JSON.parse() 将从文件读取的字符串转换为 JSON。

  • EJSON.deserialize() 输出 JSON。

  • db.salesFromDeserializeFile.insertMany() 使用EJSON.deserialize()返回的 JSON 创建并填充salesFromDeserializeFile集合。

注意

您可以在上一个示例中使用EJSON.parse() ,这是一种更简单的方法。 JSON.parse()和EJSON.deserialize()提供了更高的灵活性。

警告

在将JSON转换为BSON之前验证不可信输入

如果将JSON字符串转换为BSON并在查询、 更新或 command 中使用生成的BSON ,则攻击者可以注入操作符或意外的字段值,从而更改操作的含义。当JSON源自用户、 API请求或其他不可信来源时,这种风险最大。

要学习;了解有关在转换前验证输入的更多信息,请参阅在将JSON转换为BSON之前验证不受信任的输入。