我如何拥有多个$或操作?到目前为止,我已经尝试了以下但它默默地忽略了第二个$或。
{
$or: [{a: 2}, {a: 3}],
$or: [{b: 5}, {b: 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}]}]})