В данной главе рассматриваются логические операторы в 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