我想在mongo集合中查询名为"scheme"的字段没有值或"scheme"显式有值"http"的记录.听起来很简单,但事实证明,这个问题比最初看起来更复杂.
由于db.collection.find({'scheme': None})
返回"scheme"未定义(没有索引字段)的所有记录,我最初认为以下方法可行:
db.collection.find({'scheme': {'$in': ['http', None]}})
然而,这似乎排除了"scheme"未定义的值,因此我只能假设它正在搜索scheme为"http"或显式定义为None
的记录.这似乎有点违反直觉,但我们已经做到了.我的第二次try 是:
db.collection.find( {'$or': [{'scheme': {'$exists': False}}, {'scheme': 'http'}]})
这也排除了方案未定义的结果.这一次,我甚至想不出这个失败的逻辑原因.
你知道为什么会失败吗?我怎样才能让它按预期工作?
谢谢
编辑:我想我会注意到我是通过Python(pymongo)执行这个查询的,这解释了None
(而不是Javascript的null
)