Questo capitolo introduce gli operatori logici di MongoDB, simili alle condizioni "and" e "or" in SQL.
Operatori logici supportati da MongoDB
Operatore | Descrizione |
---|---|
$and | Trova documenti che soddisfano tutte le condizioni specificate, simile alla condizione "and" in SQL |
$not | Esegue un'operazione logica NOT sull'espressione specificata |
$or | Trova documenti che soddisfano almeno una delle condizioni specificate, simile alla condizione "or" in SQL |
$nor | Trova documenti che non soddisfano entrambe le condizioni specificate |
$and
Sintassi:
{ $and: [ { <espressione1> }, { <espressione2> }, ... , { <espressioneN> } ] }
Spiegazione:
-
è una sotto-espressione - $and prende un array contenente un gruppo di sotto-espressioni e tutte le sotto-espressioni devono essere soddisfatte
Esempio:
db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )
Equivalente SQL:
select * from inventory where qty > 50 and qty < 10
$not
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
Spiegazione:
- Se la condizione è price > 1.99, allora l'operazione NOT sarebbe price <= 1.99.
- Questo significa interrogare i documenti in cui il prezzo è inferiore o uguale a 1.99 o in cui il campo prezzo non esiste.
Simile a SQL:
select * from inventory where price <= 1.99
$or
Simile alla condizione "or" in SQL Sintassi:
{ $or: [ { <espressione1> }, { <espressione2> }, ... , { <espressioneN> } ] }
Spiegazione:
-
è una sotto-espressione - $or prende un array contenente un gruppo di sotto-espressioni e almeno una sotto-espressione deve essere soddisfatta
Esempio:
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
Equivalente SQL:
select * from inventory where quantity < 20 or price=10
$nor
Operazione logica NOR Sintassi:
{ $nor: [ { <espressione1> }, { <espressione2> }, ... , { <espressioneN> } ] }
Esempio:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
Spiegazione:
- price != 1.99 e sale != true, oppure
- price != 1.99 e il campo sale non è presente, oppure
- il campo price non è presente e sale != true