EJSON.deserialize()方法将扩展 JSON 对象转换为 BSON 对象。
语法
该方法的语法如下:
EJSON.deserialize( object, [ options ] )方法字段
该方法采用以下字段:
字段 | 类型 | 必要性 | 说明 |
|---|---|---|---|
| EJSON 对象 | 必需 | 要转换的 EJSON 对象。 例如,文档数组。 |
| 字符串 | Optional | 修改输出对象类型。 唯一的选项是
|
行为
您可以从交互式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文件并将内容解释为utf8Unicode 字符串。JSON.parse()将从文件读取的字符串转换为 JSON。EJSON.deserialize()输出 JSON。db.salesFromDeserializeFile.insertMany()使用EJSON.deserialize()返回的 JSON 创建并填充salesFromDeserializeFile集合。
注意
您可以在上一个示例中使用EJSON.parse() ,这是一种更简单的方法。 JSON.parse()和EJSON.deserialize()提供了更高的灵活性。
警告
在将 JSON 转换为 BSON 之前验证不受信任的输入
如果将 JSON string 转换为 BSON 并在查询、更新或命令中使用生成的 BSON,攻击者可以注入操作符或意外的字段值,从而改变操作的含义。当 JSON 来源于用户、API 请求或其他不可信的来源时,这种风险最大。
要了解有关在转换前验证输入的更多信息,请参阅 在将 JSON 转换为 BSON 之前验证不受信任的输入。
了解详情
EJSON文档