Mongodb: hoe u de or-operator ($or) gebruikt in query's
U kunt de operator $or in MongoDB gebruiken om documenten te vinden die aan meerdere criteria voldoen.
Deze operator gebruikt de volgende basissyntaxis:
db.myCollection.find({ “ $or ”: [ {" field1 ": " hello "}, {" field2 ": { $gte : 10 }} ] })
In dit specifieke voorbeeld wordt gezocht naar alle documenten in de verzameling met de naam myCollection , waarbij veld1 gelijk is aan ‚hallo‘ of veld2 een waarde heeft die groter is dan of gelijk is aan 10.
De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken met een incassoteam met de volgende documenten:
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})
Voorbeeld 1: Gebruik de OR-operator met twee velden
De volgende code laat zien hoe je alle documenten in de teamscollectie kunt vinden waarbij het veld „team“ gelijk is aan „Spurs“ of de waarde van het veld „punten“ groter is dan of gelijk is aan 31:
db.teams.find({ “ $or ”: [ {" team ": " Spurs "}, {" points ": { $gte : 31 }} ] })
Deze query retourneert de volgende documenten:
{ _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 }
Houd er rekening mee dat elk document in de uitvoer ‚Spurs‘ bevat in het teamveld of een waarde groter dan of gelijk aan 31 in het puntenveld.
Voorbeeld 2: gebruik van de OR-operator met meer dan twee velden
De volgende code laat zien hoe u alle documenten in de teamscollectie kunt vinden waarbij het veld „team“ gelijk is aan „Mavs“ of de waarde van het veld „punten“ groter is dan of gelijk is aan 25 of de waarde van het veld „rebounds“ kleiner is dan 8:
db.teams.find({ “ $or ”: [ {" team ": " Mavs "}, {" points ": { $gte : 25 }}, {" rebounds ": { $lt : 8 }} ] })
Deze query retourneert het volgende document:
{ _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 }
Houd er rekening mee dat elk van deze documenten aan een of meer van de drie criteria voldoet:
- Het veld “team” is gelijk aan “ Mavs ”
- Het veld “punten” heeft een waarde groter dan of gelijk aan 25
- Het veld “rebounds” heeft een waarde kleiner dan 8
Opmerking : u kunt de volledige documentatie voor de functie $or hier vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in MongoDB kunt uitvoeren:
MongoDB: hoe u de AND-operator in query’s gebruikt
MongoDB: Hoe u kunt controleren of een veld een string bevat
MongoDB: Hoe een “NO IN” -query te gebruiken
MongoDB: zoeken naar „not null“ in een specifiek veld