В данной главе рассматриваются логические операторы в MongoDB, аналогичные операторам "and" и "or" в SQL.
Логические операторы, поддерживаемые MongoDB
Оператор | Описание |
---|---|
$and | Выбирает документы, которые удовлетворяют все указанные условия, аналогично условию "and" в SQL |
$not | Выполняет логическую операцию NOT над указанным выражением |
$or | Выбирает документы, которые удовлетворяют хотя бы одному из указанных условий, аналогично условию "or" в SQL |
$nor | Выбирает документы, которые не удовлетворяют обоим указанным условиям |
$and
Синтаксис:
{ $and: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
Пояснение:
-
- это подвыражение - $and принимает массив, содержащий группу подвыражений, и все подвыражения должны быть удовлетворены
Пример:
db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )
Эквивалентный SQL:
select * from inventory where qty > 50 and qty < 10
$not
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
Пояснение:
- Если условие price > 1.99, то операция NOT будет price <= 1.99.
- Это означает запрос документов, где цена меньше или равна 1.99 или поле цены отсутствует.
Аналог в SQL:
select * from inventory where price <= 1.99
$or
Аналогично условию "or" в SQL Синтаксис:
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
Пояснение:
-
- это подвыражение - $or принимает массив, содержащий группу подвыражений, и хотя бы одно подвыражение должно быть удовлетворено
Пример:
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
Эквивалентный SQL:
select * from inventory where quantity < 20 or price=10
$nor
Логическая операция NOR Синтаксис:
{ $nor: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
Пример:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
Пояснение:
- price != 1.99 и sale != true, или
- price != 1.99 и поле sale отсутствует, или
- поле price отсутствует и sale != true