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