MongoDB:OR运算符

时间:2011-03-28 10:29:19

标签: mongodb

此查询产生3个对象:

db.list.find({ "Visibility": 4 })

这是预期的。现在,当我运行此查询时,我的结果是0个对象:

db.list.find({ "$or" : [ { "Visibility": 4 } ] } )

在两种情况下我都期望得到相同的结果,因为根据我的理解,如果任何一个条件为真,则OR将成立。

所以..我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:2)

这看起来对我来说 - 这里的快速测试表明它确实有效。

这是我跑的整个测试:

db.Test.insert({_id: 1, Visibility: 1})
db.Test.insert({_id: 2, Visibility: 4})
db.Test.insert({_id: 3, Visibility: 3})
db.Test.insert({_id: 4, Visibility: 4})
db.Test.find({$or : [{Visibility: 4}]})

果然,它会按预期返回_ids 2和4。我正在使用1.8.0,您使用的是哪个版本?

答案 1 :(得分:2)

我在1.6.5 mongo版本中完成了与@AdaTheDev相同的测试并得到了预期的结果。 所以我想你在1.5.3之前使用的mongodb版本根本不支持$or

  

$或运算符允许您使用布尔值或表达式来执行查询。   你给$或表达式列表,   任何一个都可以满足查询          MongoDB 1.5.3中的新功能