我想查詢一個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
)
你的代碼保存了我的一天。謝謝。 – Chinni 2016-01-07 23:18:21
我按照不同的答案,但沒有工作。這對我有效。多謝。 – 2016-06-01 01:25:13