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