Dieses Kapitel führt die logischen Operatoren von MongoDB ein, ähnlich den "und" und "oder" Bedingungen in SQL.
Von MongoDB unterstützte logische Operatoren
Operator | Beschreibung |
---|---|
$and | Ermittelt Dokumente, die alle angegebenen Bedingungen erfüllen, ähnlich der "und" Bedingung in SQL |
$not | Führt eine logische NOT-Operation auf dem angegebenen Ausdruck aus |
$or | Ermittelt Dokumente, die mindestens eine der angegebenen Bedingungen erfüllen, ähnlich der "oder" Bedingung in SQL |
$nor | Ermittelt Dokumente, die keine der beiden angegebenen Bedingungen erfüllen |
$and
Syntax:
{ $and: [ { <Ausdruck1> }, { <Ausdruck2> }, ... , { <AusdruckN> } ] }
Erklärung:
-
ist ein Teilausdruck - $and nimmt ein Array mit einer Gruppe von Teilausdrücken, und alle Teilausdrücke müssen erfüllt sein
Beispiel:
db.inventory.find( { $and: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } }] } )
Äquivalentes SQL:
select * from inventory where qty > 50 and qty < 10
$not
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
Erklärung:
- Wenn die Bedingung price > 1.99 ist, dann wäre die NOT-Operation price <= 1.99.
- Dies bedeutet die Abfrage von Dokumenten, bei denen der Preis kleiner oder gleich 1.99 ist oder das Preisfeld nicht existiert.
Ähnlich zu SQL:
select * from inventory where price <= 1.99
$or
Ähnlich der "oder" Bedingung in SQL Syntax:
{ $or: [ { <Ausdruck1> }, { <Ausdruck2> }, ... , { <AusdruckN> } ] }
Erklärung:
-
ist ein Teilausdruck - $or nimmt ein Array mit einer Gruppe von Teilausdrücken, und mindestens ein Teilausdruck muss erfüllt sein
Beispiel:
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
Äquivalentes SQL:
select * from inventory where quantity < 20 or price=10
$nor
Logische NOR-Operation Syntax:
{ $nor: [ { <Ausdruck1> }, { <Ausdruck2> }, ... , { <AusdruckN> } ] }
Beispiel:
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
Erklärung:
- price != 1.99 und sale != true, oder
- price != 1.99 und das sale-Feld ist nicht vorhanden, oder
- das price-Feld ist nicht vorhanden und sale != true