我正在学习如何使用Mongo,并且想知道语法下的推理。
在演员数据库中,要搜索所有英语演员,请查询:
db.actors.find({gender: 'm', $or: [{nationality: 'english'}]});
原谅我的天真,但为什么用“和”如下更有意义呢?
db.actors.find({gender: 'm', $and: [{nationality: 'english'}]});
必须有理由让我失踪(或者我的日子非常糟糕)。它是什么?
答案 0 :(得分:2)
你把和/或放在错误的地方。
不(男性或英语),(男性和(英语或其他选项))。
您只需要使用$或如果您在第二个列表中有多个条件。
您的查询可以更容易地写为:
{ gender: 'M', nationality: 'English' }
所有顶级条件之间始终存在隐式AND。
答案 1 :(得分:0)
$and
和$or
不是中缀运算符;他们采取了一系列论点。在您的情况下,您的两个查询是等效的,因为您传入的是单元素数组:( x OR y )与( x < em> AND y ),但是当你只有一个元素时, x 与 x 相同,无论它理论上是“OR”还是“与”
我想你想要:
db.actors.find({gender: 'm', nationality: 'english'});