1

所以我有下面的查询,它不应该返回任何东西。

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

但是,我认为它的等价物确实输出了正确的信息:

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

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

4

1 回答 1

2

不,它们不一样。

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

正在说“查找成分名称不等于 Kahlua 的位置”,而...

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

正在说“查找成分子对象仅包含名称属性的位置,该名称不等于 Kahlua”。因此,在这种情况下,您实际上是在对整个主题执行搜索。

可能在这里更好地解释 -点符号与子对象

于 2012-11-27T14:46:10.640 回答