Ten rozdział wprowadza operatory logiczne MongoDB, podobne do warunków "and" i "or" w SQL.

Operatory logiczne obsługiwane przez MongoDB

Operator Opis
$and Dopasowuje dokumenty, które spełniają wszystkie określone warunki, podobnie jak warunek "and" w SQL
$not Wykonuje operację logicznego NOT na określonym wyrażeniu
$or Dopasowuje dokumenty, które spełniają co najmniej jeden z określonych warunków, podobnie jak warunek "or" w SQL
$nor Dopasowuje dokumenty, które nie spełniają obu określonych warunków

$and

Składnia:

{ $and: [ { <wyrażenie1> }, { <wyrażenie2> }, ... , { <wyrażenieN> } ] }

Wyjaśnienie:

  • <wyrażenie> jest podwyrażeniem
  • $and bierze tablicę zawierającą grupę podwyrażeń, i wszystkie podwyrażenia muszą być spełnione

Przykład:

db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )

Odpowiednik SQL:

select * from inventory where qty > 50 and qty < 10

$not

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

Wyjaśnienie:

  • Jeśli warunek to price > 1.99, to operacja NOT będzie price <= 1.99.
  • Oznacza to wyszukiwanie dokumentów, gdzie cena jest mniejsza bądź równa 1.99 lub pole cena nie istnieje.

Podobne do SQL:

select * from inventory where price <= 1.99

$or

Podobne do warunku "or" w SQL Składnia:

{ $or: [ { <wyrażenie1> }, { <wyrażenie2> }, ... , { <wyrażenieN> } ] }

Wyjaśnienie:

  • <wyrażenie> jest podwyrażeniem
  • $or bierze tablicę zawierającą grupę podwyrażeń, i co najmniej jedno podwyrażenie musi być spełnione

Przykład:

db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )

Odpowiednik SQL:

select * from inventory where quantity < 20 or price=10

$nor

Operacja logicznego NOR Składnia:

{ $nor: [ { <wyrażenie1> }, { <wyrażenie2> }, ... , { <wyrażenieN> } ] }

Przykład:

db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ]  } )

Wyjaśnienie:

  • cena != 1.99 i sale != true, lub
  • cena != 1.99 i pole sale nie istnieje, lub
  • pole cena nie istnieje i sale != true