Я хотел бы запросить коллекцию 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
)