此查詢結果在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