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]}}
请不要尝试发明新的语法。