MongoDB – 多个$或操作

我将如何有多个$或操作? 到目前为止,我已经尝试了以下,但它默默地忽略第二$或。

{ $or: [{a: 2}, {a: 3}], $or: [{b: 5}, {b: 4}] } 

我假设这是因为我使用了两个相同的键。 有没有办法解决?

Mongo 2.0添加了$和operator,所以你可以这样查询:

 db.things.find({$and: [{$or : [{'a':1},{'b':2}]},{$or : [{'a':2},{'b':3}]}] }) 

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24and

$并且不会完成这个工作,因为第二个$或者在第一个失败的时候不会validation。

从Mongo手册页:

$和操作员使用短路评估。 如果第一个expression式(例如)的计算结果为false,那么MongoDB将不评估其余的expression式。

嵌套$或然而应该做的伎俩:

db.things.find({$或:[{$ or:[{'a':1},{'b':2}]},{$ or:[{'a':2},{'b ':3}]}]})

对于像在SQL中的多个我们使用$中,并为我们不使用$ nin vc是我们的集合名here.Wefind那些string包含cpu或备忘录。

 db.collection('vc').find({ "name" : { $in: [ /cpu/, /memo/ ] } } 

您不能嵌套多个$或语句。

这是在这里logging:

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or

除此之外:您的查询确实很有意义。

如果您试图查询是2或3, b是5或4:

{a:{$ in:[2,3]},b:{$ in:[4,5]}}

请不要尝试发明新的语法。

Interesting Posts