21

我想查询一个 mongo 集合中的记录,这些记录要么没有名为“scheme”的字段的值,要么明确地具有“scheme”的值“http”。听起来很简单,但事实证明这个问题比最初看起来要复杂得多。

由于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(over Javascript's null)

4

1 回答 1

8

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

于 2011-01-05T15:45:49.597 回答