在_id和其他字段上MongoDB字段排序行为是否不同?

时间:2015-01-25 12:28:58

标签: mongodb

我最近在我的服务器中遇到了一个错误,经过调查后发现因为BSON结构而订购MongoDB字典。

我以为我理解了,但这是一个我不理解的测试(mongo 2.6.4):字段排序是否只对_id有用?

测试1:插入{a:1,b:2}并查找{b:2,a:1} - >结果

> db.d.insert({a: 1, b: 2})
> db.d.find()
{ "_id" : ObjectId("54c4dfd17e8b0ba11cf1539d"), "a" : 1, "b" : 2 }
> db.d.find({b: 2, a: 1})
{ "_id" : ObjectId("54c4dfd17e8b0ba11cf1539d"), "a" : 1, "b" : 2 }

测试2:插入{smthg:{a:1,b:2}}并查找{smthg:{b:2,a:1}} - >没发现

> db.d.insert({smthg: {a: 1, b: 2}})
> db.d.find({smthg: {b: 2, a: 1}})
> db.d.find({smthg: {a: 1, b: 2}})
{ "smthg" : { "a" : 1, "b" : 2 } }

感谢您的解释

1 个答案:

答案 0 :(得分:2)

我会直接引用docs

  

子文档中的等式匹配选择文档   子文档完全匹配指定的子文档,包括   现场订单。

为此,使用dot notation

可以更好地为您服务
db.d.find({"smthg.a" : 1, "smthg.b" : 2});