Mongodb: so verwenden sie den oder-operator ($or) in abfragen
Sie können den $or- Operator in MongoDB verwenden, um Dokumente zu finden, die einem von mehreren Kriterien entsprechen.
Dieser Operator verwendet die folgende grundlegende Syntax:
db.myCollection.find({ “ $or ”: [ {" field1 ": " hello "}, {" field2 ": { $gte : 10 }} ] })
In diesem speziellen Beispiel wird nach allen Dokumenten in der Sammlung mit dem Namen „ myCollection “ gesucht, wobei Feld1 „Hallo“ entspricht oder Feld2 einen Wert größer oder gleich 10 hat.
Die folgenden Beispiele zeigen, wie diese Syntax in der Praxis mit einem Inkassoteam mit den folgenden Dokumenten verwendet wird :
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})
Beispiel 1: Verwenden Sie den OR-Operator mit zwei Feldern
Der folgende Code zeigt, wie alle Dokumente in der Teamsammlung gefunden werden, bei denen das Feld „Team“ gleich „Spurs“ ist oder der Wert des Felds „Punkte“ größer oder gleich 31 ist:
db.teams.find({ “ $or ”: [ {" team ": " Spurs "}, {" points ": { $gte : 31 }} ] })
Diese Abfrage gibt die folgenden Dokumente zurück:
{ _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 }
Beachten Sie, dass jedes Dokument in der Ausgabe „Spurs“ im Teamfeld oder einen Wert größer oder gleich 31 im Punktefeld enthält.
Beispiel 2: Verwendung des OR-Operators mit mehr als zwei Feldern
Der folgende Code zeigt, wie alle Dokumente in der Teamsammlung gefunden werden, bei denen das Feld „Team“ gleich „Mavs“ oder der Wert des Felds „Punkte“ größer oder gleich 25 oder der Wert des Felds „Rebounds“ ist ist kleiner als 8:
db.teams.find({ “ $or ”: [ {" team ": " Mavs "}, {" points ": { $gte : 25 }}, {" rebounds ": { $lt : 8 }} ] })
Diese Abfrage gibt das folgende Dokument zurück:
{ _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 }
Beachten Sie, dass jedes dieser Dokumente eines oder mehrere der drei Kriterien erfüllt:
- Das Feld „Team“ entspricht „ Mavs “
- Das Feld „Punkte“ hat einen Wert größer oder gleich 25
- Das Feld „Rebounds“ hat einen Wert kleiner als 8
Hinweis : Die vollständige Dokumentation zur $or -Funktion finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in MongoDB ausführen:
MongoDB: So verwenden Sie den AND-Operator in Abfragen
MongoDB: So überprüfen Sie, ob das Feld eine Zeichenfolge enthält
MongoDB: So verwenden Sie eine „NO IN“-Abfrage
MongoDB: So suchen Sie in einem bestimmten Feld nach „nicht null“.