2011-01-05 74 views
19

我想查詢一個mongo集合中的記錄,該記錄對於名爲'scheme'的字段沒有值,或者顯式地具有值'http'爲'計劃'。聽起來很容易,但這個問題已經證明比第一次出現更復雜。MongoDB查詢:字段要麼不存在,要麼具有特定的值

由於db.collection.find({'scheme': None})回報,其中「方案」是不明確的(無索引字段)的所有記錄,我最初以爲下面將工作:

db.collection.find({'scheme': {'$in': ['http', None]}}) 

不過,這似乎排除值在「方案」是未定義,所以我只能假設它正在搜索記錄,其中方案是'http',或明確定義爲None。這似乎有點違反直覺,但我們擁有它。我的第二次嘗試如下:

db.collection.find({'$or': [{'scheme': {'$exists': False}}, {'scheme': 'http'}]}) 

這也排除了方案未定義的結果。這一次,我甚至無法想出這種失敗的合理原因。

任何想法,爲什麼這是失敗的,以及如何讓它按需要工作?

感謝

編輯:只是想我會注意我通過的Python(pymongo),這也解釋了None執行此查詢(在JavaScript的null

+1

你的代碼保存了我的一天。謝謝。 – Chinni 2016-01-07 23:18:21

+0

我按照不同的答案,但沒有工作。這對我有效。多謝。 – 2016-06-01 01:25:13

回答

8

解決:這顯然是一個問題我的版本的mongodb(1.4.4),這個問題在1.6.5中解決。

+0

那麼,哪個版本的工作?第二個是$或者還是第一個?謝謝 – Matroska 2011-04-17 15:04:18

+0

對不起,只是注意到了這個(很晚!)答案其實都是。 – majackson 2011-12-01 15:40:14

相關問題