以下mongodb查询是等效的吗?

时间:2012-11-27 14:39:16

标签: mongodb

所以我有以下查询,它不会返回任何内容。

db.food.find({ingredient : {name : {$ne : "Kahlua"}}});  //empty data

然而,我认为它的等效输出正确的信息:

db.food.find({"ingredient.name" : {$ne : "Kahlua"}});   //gives correct data

我使用BrowserShell对上述2个查询进行了尝试,并没有给我带来很多简单函数和查询的问题。

1 个答案:

答案 0 :(得分:2)

不,他们不一样。

db.food.find({"ingredient.name" : {$ne : "Kahlua"}}); 

说“找到成分名称不等于Kahlua”,而......

db.food.find({ingredient : {name : {$ne : "Kahlua"}}});

说“找到成分子对象仅包含名称属性的位置,其中该名称不等于Kahlua”。所以在这种情况下,你实际上是在对整个主题进行搜索。

可能在这里解释得更好 - dot notation vs subobjects