我正在查询一个集合:
> db.things.find({ "entity":{entityType:"Location", id: "26802"}})
返回0结果,但如果我查询entityType
并id
切换:
> db.things.find({ "entity":{id: "26802", entityType:"Location"}})
返回3个结果。
还为以下两者返回了3个结果:
> db.things.find({ "entity.id": "26802", "entity.entityType":"Location"})
> db.things.find({ "entity.entityType":"Location", "entity.id": "26802"})
为什么会这样?
entity
{
"v" : 1,
"key" : {
"entity" : 1
},
"name" : "entity_1",
"ns" : "db_name.things"
}
答案 0 :(得分:3)
请参阅此link,
此查询entity
字段必须与嵌入文档完全匹配。
> db.things.find({ "entity":{entityType:"Location", id: "26802"}})
仅匹配
entity: {
entityType:"Location",
id: "26802"
}
而不是这个对象
entity: {
id: "26802"
entityType:"Location",
}
但是,下面的这两个查询可以匹配上述两个对象,因为此查询与entity
字段包含嵌入文档的文档匹配,其中字段id
的值为"26802"
以及值entityType
的字段"Location"
。
> db.things.find({ "entity.id": "26802", "entity.entityType":"Location"})
> db.things.find({ "entity.entityType":"Location", "entity.id": "26802"})