【发布时间】:2015-11-12 20:29:34
【问题描述】:
我想在其他说 JSON 的程序中使用一些 MongoDB 命令的原始输出。当我在 mongo shell 中运行命令时,它们代表 Extended JSON,“shell 模式”中的字段,以及 NumberLong、Date 和 Timestamp 等特殊字段。我在文档中看到对“严格模式”的引用,但我看不到为 shell 打开它的方法,或者在 do 输出严格 JSON 的事情中运行像 db.serverStatus() 这样的命令的方法,喜欢mongodump。如何强制 Mongo 输出符合标准的 JSON?
【问题讨论】:
-
你搞错了。 shell 使用“严格”语法,即
{ "a": NumberLong(1) }等。而 shell 根本不支持的“扩展 JSON”被mongoexport之类的工具使用,"a":{"$numberLong":"1"}}是可解析的 JSON 形式。mongodump只是转储 BSON 数据文件。 -
你错了。 documentation 清楚地表明 NumberLong 类型的“严格模式”表示为
{ "$numberLong": "<number>" },而“shell 模式”表示为NumberLong( "<number>" )。我可以编辑问题以阐明“扩展 JSON”和“shell 模式”之间的区别。 -
就像我说的。你完全相反。扩展 JSON 就是您所说的“严格”。
-
语义并没有真正改变问题或答案,但 FWIW,先前链接的文档指定“shell 模式”和“严格模式”都是 JSON 的扩展,因此“扩展 JSON”包括两者。如果有其他文件表明不是这样,我很想看看。
-
布莱克七请阅读 docs.mongoing.com/manual/reference/mongodb-extended-json.html 严格模式 -> { "$oid": "
" } shell 模式 -> ObjectId( " " ) strict = 标准 Json