所以我有以下查询,它不会返回任何内容。
db.food.find({ingredient : {name : {$ne : "Kahlua"}}}); //empty data
然而,我认为它的等效输出正确的信息:
db.food.find({"ingredient.name" : {$ne : "Kahlua"}}); //gives correct data
我使用BrowserShell对上述2个查询进行了尝试,并没有给我带来很多简单函数和查询的问题。
答案 0 :(得分:2)
不,他们不一样。
db.food.find({"ingredient.name" : {$ne : "Kahlua"}});
说“找到成分名称不等于Kahlua”,而......
db.food.find({ingredient : {name : {$ne : "Kahlua"}}});
说“找到成分子对象仅包含名称属性的位置,其中该名称不等于Kahlua”。所以在这种情况下,你实际上是在对整个主题进行搜索。
可能在这里解释得更好 - dot notation vs subobjects