为什么使用$或代替$和?

时间:2013-09-02 23:56:56

标签: mongodb

我正在学习如何使用Mongo,并且想知道语法下的推理。

在演员数据库中,要搜索所有英语演员,请查询:

db.actors.find({gender: 'm', $or: [{nationality: 'english'}]});

原谅我的天真,但为什么用“和”如下更有意义呢?

db.actors.find({gender: 'm', $and: [{nationality: 'english'}]});

必须有理由让我失踪(或者我的日子非常糟糕)。它是什么?

2 个答案:

答案 0 :(得分:2)

你把和/或放在错误的地方。

(男性或英语),(男性和(英语或其他选项))。

您只需要使用$或如果您在第二个列表中有多个条件。

您的查询可以更容易地写为:

  { gender: 'M', nationality: 'English' }

所有顶级条件之间始终存在隐式AND。

答案 1 :(得分:0)

$and$or不是中缀运算符;他们采取了一系列论点。在您的情况下,您的两个查询是等效的,因为您传入的是单元素数组:( x OR y )与( x AND y ),但是当你只有一个元素时, x x 相同,无论它理论上是“OR”还是“与”

我想你想要:

db.actors.find({gender: 'm', nationality: 'english'});