0

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

在演员数据库中,要搜索所有也是英语的男演员,查询是:

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

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

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

我错过了(或者我今天过得很糟糕)一定是有原因的。它是什么?

4

2 回答 2

2

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

不是 (男性或英语),而是(男性和(英语或无其他选项))

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

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

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

所有顶级条件之间总是存在隐含的 AND。

于 2013-09-03T00:02:27.227 回答
0

$and并且$or不是中缀运算符;他们接受一系列论据。在您的情况下,您的两个查询是等效的,因为您传递的是一个单元素数组:(x OR y)不同于(x AND y),但是当您只有一个元素时,xx理论上是“OR”还是“AND”。

我猜你想要:

db.actors.find({gender: 'm', nationality: 'english'});
于 2013-09-03T00:03:42.310 回答