MongoDb中键值的顺序

7

mongo 代码:

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

db.temperature.find();

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

请帮我理解为什么在我的案例中(如上面所示),即使在插入时顺序不同,find方法也会先显示Y值,然后才是x值。

感谢任何帮助。

1个回答

7
引自 https://dev59.com/pG445IYBdhLWcg3wE2Xw#6453755 MongoDB 的文档结构和集合结构都基于 JSON 原则。JSON 是一组键值对(特别是对于文档的 fieldName/fieldValue 和对于集合的索引/文档)。从这个角度来看,似乎您根本无法依赖顺序。
这意味着 MongoDB 并不需要按照特定顺序返回一个记录的字段。您需要准备好在任何可能的顺序下解析结果。

什么样的架构概念会使得排序变得不确定?我想即使是分片也无法解耦单元文档。 - Yashodhan K
如果您想深入了解为什么JSON是无序的,可以查看JSON规范。根据该规范: “对象是一组无序的名称/值对。” - Makis Tsantekidis
在Mongo中,键的顺序可能很重要,某些查找查询将根据键的顺序返回一些结果或无结果。请参见http://devblog.me/wtf-mongo作为示例,如果链接失效,请在wayback machine上查找。 - Kevin Wheeler
2
但是,关于复合索引的查询呢? https://docs.mongodb.com/manual/tutorial/sort-results-with-indexes/#sort-on-multiple-fields 它说 {a:1, b:1} 和 {b:1,a:1} 是不同的。MongoDB 是如何保证这一点的呢? - Praveen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接