我最近在我的服务器中遇到了一个错误,经过调查后发现因为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 } }
感谢您的解释
答案 0 :(得分:2)
我会直接引用docs:
子文档中的等式匹配选择文档 子文档完全匹配指定的子文档,包括 现场订单。
为此,使用dot notation:
可以更好地为您服务db.d.find({"smthg.a" : 1, "smthg.b" : 2});