MongoDB Abfrageoperatoren
In diesem Kapitel besprechen wir, wie man Abfrageoperatoren in MongoDB verwendet.
In MongoDB werden Abfrageoperatoren zum Filtern, Vergleichen und Ausführen logischer Operationen beim Abfragen von Dokumenten verwendet.
Diese Operatoren können in die folgenden Kategorien unterteilt werden: Vergleichsoperatoren, logische Operatoren, Elementoperatoren, Array-Operatoren und andere häufig verwendete Operatoren.
Vergleichsoperatoren
Die Vergleichsoperatoren sind:
| Operator | Beschreibung | Beispiel |
|---|---|---|
$eq | equals | { age: { $eq: 25 } } |
$ne | ungleich | { age: { $ne: 25 } } |
$gt | größer als | { age: { $gt: 25 } } |
$gte | größer als oder gleich | { age: { $gte: 25 } } |
$lt | kleiner als | { age: { $lt: 25 } } |
$lte | kleiner als oder gleich | { age: { $lte: 25 } } |
$in | ist im angegebenen Array | { age: { $in: [25, 30, 35] } } |
$nin | ist nicht im angegebenen Array | { age: { $nin: [25, 30, 35] } } |
$eq (gleich)
Syntax:
{ field: { $eq: value } }
Finden Sie Personen, deren Alter gleich 25 ist:
db.collection.find({ age: { $eq: 25 } })
$ne (ungleich)
Syntax:
{ field: { $ne: value } }
Finden Sie Personen, deren Alter nicht gleich 25 ist:
db.collection.find({ age: { $ne: 25 } })
$gt (größer als)
Syntax:
{ field: { $gt: value } }
Finden Sie Personen, deren Alter größer als 25 ist:
db.collection.find({ age: { $gt: 25 } })
$gte (größer als oder gleich)
Syntax:
{ field: { $gte: value } }
Finden Sie Personen, deren Alter größer oder gleich 25 ist:
db.collection.find({ age: { $gte: 25 } })
$lt (kleiner als)
Syntax: { field: { $lt: value } }Finden Sie Personen, deren Alter kleiner als 25 ist:
db.collection.find({ age: { $lt: 25 } })
$lte (kleiner als oder gleich)
Syntax:
{ field: { $lte: value } }
Finden Sie Personen, deren Alter kleiner oder gleich 25 ist:
db.collection.find({ age: { $lte: 25 } })
$in (Wert ist im Array)
Syntax:
{ field: { $in: [value1, value2, ...] } }
Finden Sie Personen, deren Alter eines von 20, 25 und 30 ist:
db.collection.find({ age: { $in: [20, 25, 30] } })
$nin (Wert ist nicht im Array)
Syntax:
{ field: { $nin: [value1, value2, ...] } }
Finden Sie Personen, deren Alter nicht 20, 25 oder 30 ist:
db.collection.find({ age: { $nin: [20, 25, 30] } })
Logische Operatoren
Die logischen Operatoren sind:
| Operator | Beschreibung | Beispiel |
|---|---|---|
$and | Logisches UND, erfüllt alle Bedingungen | { $and: [ { age: { $gt: 25 } }, { city: "New York" } ] } |
$or | Logisches ODER, erfüllt mindestens eine Bedingung | { $or: [ { age: { $lt: 25 } }, { city: "New York" } ] } |
$not | Negation, erfüllt die Bedingung nicht | { age: { $not: { $gt: 25 } } } |
$nor | Logisches NOR, erfüllt keine der Bedingungen | { $nor: [ { age: { $gt: 25 } }, { city: "New York" } ] } |
$and (alle Bedingungen sind erfüllt)
Syntax:
{ $and: [ { condition1 }, { condition2 } ] }
Finden Sie Personen, deren Alter größer als 25 und kleiner als 35 ist:
db.collection.find({ $and: [{ age: { $gt: 25 } }, { age: { $lt: 35 } }] })
$or (mindestens eine Bedingung ist erfüllt)
Syntax:
{ $or: [ { condition1 }, { condition2 } ] }
Finden Sie Personen, deren Alter größer als 25 oder kleiner als 18 ist:
db.collection.find({ $or: [{ age: { $gt: 25 } }, { age: { $lt: 18 } }] })
$not (negiert die Bedingung)
Syntax:
{ field: { $not: { condition } } }
Finden Sie Personen, deren Alter nicht größer als 25 ist:
db.collection.find({ age: { $not: { $gt: 25 } } })
$nor (keine der Bedingungen trifft zu)
Syntax:
{ $nor: [ { condition1 }, { condition2 } ] }
Finde Personen, deren Alter nicht größer als 25 und nicht kleiner als 18 ist:
db.collection.find({ $nor: [{ age: { $gt: 25 } }, { age: { $lt: 18 } }] })
Elementoperatoren
Die Elementoperatoren sind:
| Operator | Beschreibung | Beispiel |
|---|---|---|
$exists | ob das Feld existiert | { age: { $exists: true } } |
$type | der BSON-Typ des Feldes | { age: { $type: "int" } } |
$exists (Feld existiert)
Syntax:
{ field: { $exists: boolean } }
Finde Dokumente, die das Feld age enthalten:
db.collection.find({ age: { $exists: true } })
$type (Feldtyp)
Syntax:
{ field: { $type: "type" } }
Finde Dokumente, in denen das Feld age vom Typ integer ist:
db.collection.find({ age: { $type: "int" } })
Array-Operatoren
Die Array-Operatoren sind:
| Operator | Beschreibung | Beispiel |
|---|---|---|
$all | Array enthält alle angegebenen Elemente | { tags: { $all: ["red", "blue"] } } |
$elemMatch | Array-Elemente entsprechen den angegebenen Bedingungen | { results: { $elemMatch: { score: { $gt: 80, $lt: 85 } } } } |
$size | Array-Länge entspricht dem angegebenen Wert | { tags: { $size: 3 } } |
Finde Dokumente, deren tags-Array "red" und "blue" enthält:
db.myCollection.find({ tags: { $all: ["red", "blue"] } });
$all (Array enthält alle angegebenen Elemente)
Syntax:
{ field: { $all: [value1, value2, ...] } }Finde Dokumente, deren tags-Array "mongodb" und "database" enthält:
db.collection.find({ tags: { $all: ["mongodb", "database"] } })
$elemMatch (mindestens ein Element im Array erfüllt die Bedingung)
Syntax:{ field: { $elemMatch: { condition } } }
Finde Elemente im items-Array, bei denen quantity größer als 10 ist:
db.collection.find({ items: { $elemMatch: { quantity: { $gt: 10 } } } })
$size (Array-Größe)
Syntax:
{ field: { $size: value } }
Finde Dokumente, bei denen das tags-Array die Größe 3 hat:
db.collection.find({ tags: { $size: 3 } })
Weitere Operatoren
Es gibt einige weitere Operatoren wie folgt:
| Operator | Beschreibung | Beispiel |
|---|---|---|
$regex | Entspricht einem regulären Ausdruck | { name: { $regex: /^A/ } } |
$text | Führt eine Textsuche durch | { $text: { $search: "coffee" } } |
$where | Verwendet JavaScript-Ausdrücke für die bedingte Filterung | { $where: "this.age > 25" } |
| $near | Findet Dokumente in der Nähe eines angegebenen Punkts | db.collection.find({ location: { $near: [10, 20], $maxDistance: 1000 } }) |
| $geoWithin | Findet Dokumente innerhalb eines angegebenen geografischen Gebiets | db.collection.find({ location: { $geoWithin: { $centerSphere: [[10, 20], 1] } } }) |
$regex (Übereinstimmung mit regulärem Ausdruck)
Syntax:
{ field: { $regex: "pattern" } }Findet Dokumente, bei denen name mit "John" beginnt:
db.collection.find({ name: { $regex: /^John/ } })$near (Dokumente in der Nähe eines angegebenen Punkts)
Syntax:
{ field: { $near: [longitude, latitude], $maxDistance: distance } }
Findet Dokumente in der Nähe eines bestimmten Standorts:
db.collection.find({ location: { $near: [10, 20], $maxDistance: 1000 } })
$geoWithin (findet Dokumente innerhalb eines angegebenen Bereichs)
Syntax:
{ field: { $geoWithin: { $centerSphere: [[longitude, latitude], radius] } } }
Findet Dokumente innerhalb eines angegebenen geografischen Gebiets:
db.collection.find({ location: { $geoWithin: { $centerSphere: [[10, 20], 1] } } }) Weitere Erweiterungen