EJSON.parse()方法将字符串值转换为 JSON。
语法
EJSON.parse()方法将字符串作为输入,并使用控制输出格式的可选修饰符。
EJSON.parse(string, [options])命令字段
EJSON.parse()方法接受以下字段:
字段 | 类型 | 必要性 | 说明 |
|---|---|---|---|
| 字符串 | 必需 | 字符串 |
| 字符串 | Optional | 修改输出类型。 唯一的选项是
|
行为
您可以从交互式mongosh会话中调用EJSON.parse() ,也可以使用--eval从系统命令行中调用。
从交互式会话中调用EJSON.parse() :
EJSON.parse(string)从系统命令行调用EJSON.parse() :
mongosh --eval "EJSON.parse(string)"示例
要尝试这些示例,请先创建salescollection:
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.parse() 格式化输入
EJSON.parse() 接受字符串作为输入。 对于此示例,请使用EJSON.stringify() 方法将salescollection导出为字符串。
let salesCollection = EJSON.stringify( db.sales.find().toArray() )使用EJSON.parse() 为 等需要 对的方法设置string db.collection.insertMany()JSON格式:
db.salesRestored.insertMany( EJSON.parse( salesCollection ) )EJSON.parse()将salesCollection中的值格式化为 JSON 对。db.salesRestored.insertMany()使用 JSON 对创建salesRestored集合。
从命令行使用 EJSON.parse()
要从文件或 API 调用等外部源导入字符串数据,请使用EJSON.parse()和mongosh --eval方法。
对于本示例,将salescollection另存为文件。
let salesCollection = EJSON.stringify( db.sales.find().toArray() )
fs.writeFileSync( 'sales.json', salesCollection )该代码会在本地系统上创建一个名为sales.json的文件。 要导入文件并创建collection,请退出mongosh并从命令行运行--eval操作。
# Note: This example is formatted to fit on the page.
mongosh --quiet \ --eval "db.salesFromFile.insertMany( \ EJSON.parse( fs.readFileSync( 'sales.json', 'utf8' ) ) )"EJSON.parse()将字符串作为输入。 此示例使用fs.readFileSync()将sale.json文件作为字符串读取。EJSON.parse()将输入字符串格式化为 JSON 对。db.salesFromFile.insertMany()从 JSON 对创建salesFromFilecollection。
警告
在将 JSON 转换为 BSON 之前验证不受信任的输入
如果将 JSON string 转换为 BSON 并在查询、更新或命令中使用生成的 BSON,攻击者可以注入操作符或意外的字段值,从而改变操作的含义。当 JSON 来源于用户、API 请求或其他不可信的来源时,这种风险最大。
要了解有关在转换前验证输入的更多信息,请参阅 在将 JSON 转换为 BSON 之前验证不受信任的输入。
了解详情
EJSON文档
Mozilla Developer Network JSON.parse 文档