У меня есть коллекция, в которой некоторые объекты имеют ключ foo
. Теперь я пытаюсь запросить все объекты, которые действительно имеют этот ключ, но не с конкретным значением bar
. Для этого я использую следующий запрос:
collection.find({'foo': {'$exists': True}, 'foo': {'$ne': 'bar'}})
Я думал, что оба критерия связаны через логическое И. Однако я также получаю объекты, у которых нет ключа foo
. Фактически, я получаю тот же результат, когда просто использую запрос
collection.find({'foo': {'$ne': 'bar'}})
С другой стороны, если я использую
collection.find({'foo': {'$exists': True}})
Я правильно получаю только объекты с foo
, но явно все они, поэтому некоторые из них имеют значение bar
.
Как мне сформулировать запрос, чтобы получить первоначальный результат? Существует ли порядок, в котором проверяются несколько критериев? Я явно указываю логическое И обоих критериев?
{$ne : 'bar'}
должно работать так же, как{'$ne' : 'bar'}
). Возможно, также может иметь значение заглавная буква, например,True
. - person Christian   schedule 26.08.2015