MongoDB: оператор ИЛИ - PullRequest
       6

MongoDB: оператор ИЛИ

2 голосов
/ 28 марта 2011

Результатом этого запроса являются 3 объекта:

db.list.find({ "Visibility": 4 })

Это ожидается. Теперь, когда я запускаю этот запрос, мой результат - 0 объектов:

db.list.find({ "$or" : [ { "Visibility": 4 } ] } )

Я ожидал бы одинакового результата в обоих случаях, поскольку, в моем понимании, ИЛИ было бы истинным, если выполняется одно из условий.

Итак ... Я что-то упускаю здесь очевидное?

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Я провел тот же тест, что и @AdaTheDev в версии 1.6.5 mongo, и получил ожидаемые результаты.Поэтому я предполагаю, что вы используете версию mongodb до 1.5.3, которая вообще не поддерживает $or.

Оператор $ or позволяет использовать логическое выражение или выражение для выполнения запросов.Вы указываете $ или список выражений, любое из которых может удовлетворить запрос.
Новое в MongoDB 1.5.3

2 голосов
/ 28 марта 2011

Это выглядит как для меня - быстрый тест показывает, что это работает.

Вот весь тест, который я провел:

db.Test.insert({_id: 1, Visibility: 1})
db.Test.insert({_id: 2, Visibility: 4})
db.Test.insert({_id: 3, Visibility: 3})
db.Test.insert({_id: 4, Visibility: 4})
db.Test.find({$or : [{Visibility: 4}]})

Конечно, он возвращает _ids 2 и 4, как и ожидалось.Я использую 1.8.0, какую версию вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...