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