此查询结果在3个对象:的MongoDB:或运营商
db.list.find({ "Visibility": 4 })
这是预期。现在,当我运行此查询我的结果是0对象:
db.list.find({ "$or" : [ { "Visibility": 4 } ] })
我希望在这两种情况下相同的结果,因为,在我的理解中,还是会如果任一条件为真,是真实的。
所以..我在这里错过了一些明显的东西吗?
此查询结果在3个对象:的MongoDB:或运营商
db.list.find({ "Visibility": 4 })
这是预期。现在,当我运行此查询我的结果是0对象:
db.list.find({ "$or" : [ { "Visibility": 4 } ] })
我希望在这两种情况下相同的结果,因为,在我的理解中,还是会如果任一条件为真,是真实的。
所以..我在这里错过了一些明显的东西吗?
我已经完成了与@AdaTheDev在1.6.5
mongo版本相同的测试并获得了预期的结果。 所以我想你使用的mongodb版本1.5.3
之前根本不支持$or
。
$或操作符允许您使用布尔值或表达式来执行查询。 您给出$或表达式列表, 其中任何一个都可以满足查询。
新MongoDB中1.5.3
这看起来对我来说 - 这里的快速测试表明,它确实有效。
这里是整个测试我跑:
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根据我的回答每个评论,Mika使用v1.4.4 – AdaTheDev 2011-03-28 11:11:21
@AdaTheDev:是的,我明白了。 +1也。 – 2011-03-28 11:15:04
是的,那是我的问题。现在运行1.8,一切按预期运行。谢谢:) – Mika 2011-03-28 13:15:16