MongoDB查询:字段要么不存在要么具有特定值

时间:2011-01-05 15:27:05

标签: mongodb pymongo

我想查询一个mongo集合,查找哪些记录没有名为'scheme'的字段的值,或者显式为'scheme'赋值'http'。听起来很简单,但事实证明这个问题比最初出现的问题更复杂。

由于db.collection.find({'scheme': None})返回'scheme'未定义的所有记录(没有索引字段),我最初认为以下内容可行:

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

然而,这似乎排除了'scheme'未定义的值,因此我只能假设它正在搜索其中scheme为'http'或明确定义为None的记录。这似乎有点违反直觉,但我们有它。我的第二次尝试如下:

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

这也排除了方案未定义的结果。这一次,我甚至无法想到为什么失败的合理原因。

为什么会失败的任何想法,以及如何让它按照需要运作?

由于

编辑:我想我已经注意到我正在通过Python(pymongo)执行此查询,这解释了None(通过Javascript的null

1 个答案:

答案 0 :(得分:8)

已解决:这显然是我的mongodb版本(1.4.4)的问题,问题在1.6.5中得到解决。