MongoDB - 多个$或操作

时间:2011-03-01 03:04:15

标签: key mongodb

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

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

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

4 个答案:

答案 0 :(得分:91)

Mongo 2.0添加了$和运算符,因此您可以执行以下查询:

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

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

答案 1 :(得分:-1)

对于像sql这样的多个我们使用$ in而不是我们使用$ nin vc是我们的集合名称。我们发现那些字符串包含cpu或memo。

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

答案 2 :(得分:-2)

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

这里记录在案:

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

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

如果您尝试查询 a 为2或3而 b 为5或4:

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

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

答案 3 :(得分:-2)

$并且不会完成这项工作,因为第二个$或者不会验证第一个是否失败。

来自Mongo手册页:

$和运算符使用短路评估。如果第一个表达式(例如)的计算结果为false,则MongoDB将不会评估剩余的表达式。

嵌套$或者应该这样做:

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