Подтвердить что ты не робот

Запрос MongoDB: поле либо не существует, либо имеет конкретное значение

Я хотел бы запросить коллекцию mongo для записей, которые либо не имеют значения для поля с именем "схема" , либо явно имеют значение "http" для "схемы". Звучит довольно легко, но эта проблема оказалась более сложной, чем кажется на первый взгляд.

Так как db.collection.find({'scheme': None}) возвращает все записи, где "схема" undefined (без индексного поля), я предположил, что следующее будет работать:

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

Однако это, по-видимому, исключает значения, в которых "схема" undefined, поэтому я могу только предположить, что она ищет записи, где схема является либо "http", либо явно определена как None. Это кажется немного противоречивым, но там у нас это есть. Моя вторая попытка заключалась в следующем:

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

Это также исключает результат, когда схема undefined. На этот раз я даже не могу думать о логической причине, почему это не удается.

Любые идеи, почему это не удается, и как я могу заставить его работать по своему желанию?

Спасибо

EDIT: Просто подумал, что я хочу отметить, что я выполняю этот запрос через Python (pymongo), что объясняет None (над Javascript null)

4b9b3361

Ответ 1

Решено: это, по-видимому, проблема моей версии mongodb (1.4.4), проблема решена в 1.6.5.