Mongodb Query: поле либо не существует, либо имеет определенное значение

StackOverflow https://stackoverflow.com/questions/4605799

  •  25-09-2019
  •  | 
  •  

Вопрос

Я хотел бы запросить коллекцию Mongo для записей, которые либо не имеют значения для поля «Схема», либо явно имейте значение «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 (над JavaScript's null)

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top