Mongodb: come utilizzare l'operatore or ($or) nelle query


Puoi utilizzare l’operatore $or in MongoDB per trovare documenti che corrispondono a uno qualsiasi dei criteri multipli.

Questo operatore utilizza la seguente sintassi di base:

 db.myCollection.find({
  “ $or ”: [
    {" field1 ": " hello "},
    {" field2 ": { $gte : 10 }}
  ]
})

Questo particolare esempio cerca tutti i documenti nella raccolta denominata myCollection dove campo1 è uguale a “ciao” o campo2 ha un valore maggiore o uguale a 10.

I seguenti esempi mostrano come utilizzare questa sintassi nella pratica con un team di recupero crediti con i seguenti documenti:

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})

Esempio 1: utilizzare l’operatore OR con due campi

Il codice seguente mostra come trovare tutti i documenti nella raccolta squadre in cui il campo “squadra” è uguale a “Spurs” o il valore del campo “punti” è maggiore o uguale a 31:

 db.teams.find({
  “ $or ”: [
    {" team ": " Spurs "},
    {" points ": { $gte : 31 }}
  ]
})

Questa query restituisce i seguenti documenti:

 { _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

Tieni presente che ciascun documento nell’output contiene “Spurs” nel campo squadra o un valore maggiore o uguale a 31 nel campo punti.

Esempio 2: utilizzo dell’operatore OR con più di due campi

Il codice seguente mostra come trovare tutti i documenti nella raccolta squadre in cui il campo “squadra” è uguale a “Mavs” o il valore del campo “punti” è maggiore o uguale a 25 o il valore del campo “rimbalzi” è inferiore a 8:

 db.teams.find({
  “ $or ”: [
    {" team ": " Mavs "},
    {" points ": { $gte : 25 }},
    {" rebounds ": { $lt : 8 }}
  ]
})

Questa query restituisce il seguente documento:

 { _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Tieni presente che ciascuno di questi documenti soddisfa uno o più di tre criteri:

  • Il campo “team” equivale a “ Mavs
  • Il campo “punti” ha un valore maggiore o uguale a 25
  • Il campo “rimbalzi” ha un valore inferiore a 8

Nota : puoi trovare la documentazione completa per la funzione $or qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in MongoDB:

MongoDB: come utilizzare l’operatore AND nelle query
MongoDB: come verificare se il campo contiene una stringa
MongoDB: come utilizzare una query “NO IN”.
MongoDB: come cercare “not null” in un campo specifico

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *