【问题标题】:Order of key values in mongoDb [duplicate]mongoDb中键值的顺序[重复]
【发布时间】:2013-12-20 10:23:37
【问题描述】:

mongo 代码:

db.temperature.insert({"x":3,"y":4});

db.temperature.find();

输出 { "_id" : ObjectId("52b418fb132c1f3236831447"), "y" : 4, "x" : 3 }

请帮助我理解为什么在我的情况下(上图)即使插入订单不同,find 方法也会先显示 Y 值,然后显示 x 值。

感谢任何帮助。

【问题讨论】:

    标签: mongodb mongo-shell


    【解决方案1】:

    引用https://stackoverflow.com/a/6453755/1150636

    MongoDB 中的文档结构和集合结构都基于 JSON 原则。 JSON 是一组键/值对(特别是用于文档的 fieldName/fieldValue 和用于集合的索引/文档)。从这个角度来看,您似乎根本无法依赖订单。

    这意味着mongodb返回一条记录的字段没有特定的顺序。您需要准备好以可能返回的任何顺序解析结果。

    【讨论】:

    • 什么架构概念让排序不确定?我想即使是分片也不能解耦单元文档。
    • 如果您想深入了解 JSON 无序的原因,可以查看 the specification of JSON。根据该规范:An object is an unordered set of name/value pairs.
    • 在 mongo 中键的顺序可能很重要,某些查找查询会根据键的顺序返回一些结果或不返回结果。例如,参见devblog.me/wtf-mongo,如果链接失效,请在 Wayback 机器上找到它。
    • 但是,如何查询 w.r.t.复合指数? docs.mongodb.com/manual/tutorial/sort-results-with-indexes/… 它说 {a:1, b:1} 和 {b:1,a:1} 是不同的。 mongo 如何确保这一点?
    猜你喜欢
    • 2011-05-26
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多