MongoDB/ PyMongo: запрос нескольких критериев-неожиданные результаты
у меня есть коллекция, где некоторые объекты имеют ключ foo
. Сейчас я пытаюсь запросить все объекты, которые действительно имеют этот ключ, но не с конкретным значением bar
. Для этого я использую следующий запрос:
collection.find({'foo': {'$exists': True}, 'foo': {'$ne': 'bar'}})
Я думал, что оба критерия связаны через логический. Тем не менее, я получаю также объекты, которые не имеют ключа foo
. На самом деле, я получаю тот же результат, когда я использую запрос
collection.find({'foo': {'$ne': 'bar'}})
на другом Ганс, если я использовать
collection.find({'foo': {'$exists': True}})
Я правильно получаю только объекты с foo
но очевидно, что все они, поэтому некоторые из них имеют значение bar
.
как мне сформулировать мой запрос для достижения моего первоначального результата? Существует ли какой-то порядок, в котором тестируются несколько критериев? Должен ли я явно указать логический и обоих критериев?
2 ответов
можно использовать $and
чтобы присоединиться к нескольким условиям:
collection.find({"$and": [{"foo": {'$ne': 'bar'}},
{"foo": {'$exists': True}}]})