$eq, $gt, $lt ·
$and, $or, $not ·
$exists, $type ·
$all, $elemMatch ·
$regex, $where ·
$geoWithin, $near
MongoDB bietet eine Vielzahl von Operatoren für komplexe Abfragen. Diese ermöglichen präzise Filterung von Dokumenten – von einfachen Vergleichen bis zu geospatialen Analysen.
Vergleichsoperatoren vergleichen Werte in Dokumenten mit angegebenen Kriterien. Sie sind die grundlegendsten Operatoren für MongoDB-Abfragen.
| Operator | Bedeutung | Beispiel |
|---|---|---|
| $eq | Gleich | { name: { $eq: "Laptop" } } |
| $ne | Ungleich | { status: { $ne: "inaktiv" } } |
| $gt | Größer als | { preis: { $gt: 100 } } |
| $gte | Größer oder gleich | { preis: { $gte: 100 } } |
| $lt | Kleiner als | { preis: { $lt: 50 } } |
| $lte | Kleiner oder gleich | { preis: { $lte: 50 } } |
| $in | In einer Liste | { kategorie: { $in: ["A", "B"] } } |
| $nin | Nicht in einer Liste | { status: { $nin: ["gelöscht", "archiviert"] } } |
$gte und $lte für Bereichsabfragen.
Logische Operatoren kombinieren mehrere Abfragebedingungen. $and verlangt alle Bedingungen, $or mindestens eine.
{ preis: { $gt: 100 }, kategorie: "Elektronik" }.
Elementoperatoren prüfen die Existenz und den Typ von Feldern in Dokumenten – nützlich für die Arbeit mit heterogenen Datenstrukturen.
$exists mit false, um Dokumente zu finden, bei denen ein Feld fehlt – z.B. für Migrationen oder Datenbereinigung.
Arrayoperatoren arbeiten mit Array-Feldern – sie prüfen, ob Werte enthalten sind, ob Bedingungen auf Array-Elemente zutreffen oder wie viele Elemente vorhanden sind.
$elemMatch ist wichtig, wenn Sie mehrere Bedingungen auf dasselbe Array-Element anwenden möchten – einfache Abfragen wie { tags: "neu", tags: "im_angebot" } prüfen nur, ob beide Werte irgendwo im Array vorkommen.
Evaluationsoperatoren führen Berechnungen oder Mustervergleiche durch – für Textsuche, Feldvergleiche und JavaScript-Ausdrücke.
$where und $regex ohne Index sind langsam. Verwenden Sie $text für Volltextsuche und $regex mit Indizes für Performance. $where sollte vermieden werden.
Geospatiale Operatoren ermöglichen Abfragen basierend auf geografischen Koordinaten – für Standortdienste, Umkreissuchen und Flächenabfragen.
2dsphere-Index auf dem Feld mit GeoJSON-Daten erstellen. Verwenden Sie db.collection.createIndex({ position: "2dsphere" }).
$gt
$or
$exists
$all
$regex
$near
{ preis: { $gt: 100, $lt: 500 } } ·
{ $or: [ { status: "offen" }, { dringend: true } ] } ·
{ tags: { $all: ["neu", "im_angebot"] } }