Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
$expr
Neu ab Version 4.0.
Wird von Elastic Cluster nicht unterstützt.
Der $expr Operator in Amazon DocumentDB ermöglicht es Ihnen, Aggregationsausdrücke in der Abfragesprache zu verwenden. Er ermöglicht es Ihnen, komplexe Vergleiche und Berechnungen für Felder innerhalb eines Dokuments durchzuführen, ähnlich wie Sie Aggregationspipeline-Stufen verwenden würden.
Die in einem $expr Operator platzierten $gte Vergleichsoperatoren $eq $lt $lte$gt,, und die Vergleichsoperatoren können einen Index verwenden, einschließlich eines Indexes für die from Sammlung, auf die in einer $lookup Phase verwiesen wird.
Einschränkungen
-
Indizes können nur für Vergleiche zwischen Feldern und Konstanten verwendet werden, daher muss der Operand in eine Konstante aufgelöst werden. Beispielsweise kann ein Vergleich zwischen
$aund einem konstanten Wert einen Index verwenden, ein Vergleich zwischen$aund nicht.$b -
Indizes mit mehreren Schlüsseln, Teilindizes oder Indizes mit geringer Dichte werden nicht verwendet. In diesen Fällen fällt die Abfrage auf einen Sammlungsscan zurück.
-
Wenn der
letOperand zu einem leeren oder fehlenden Wert aufgelöst wird, kann für den Vergleich keine gezielte Indexsuche verwendet werden. In diesem Fall führt Amazon DocumentDB einen vollständigen Indexscan durch.
Parameter
-
expression: Ein Ausdruck, der einen booleschen Wert zurückgibt, sodass Sie Vergleiche und Berechnungen für Dokumentfelder durchführen können.
Beispiel (MongoDB Shell)
Das folgende Beispiel zeigt, wie der $expr Operator verwendet wird, um alle Dokumente zu finden, in denen das manufacturingCost Feld größer als das price Feld ist.
Erstellen Sie Beispieldokumente
db.inventory.insertMany([ { item: "abc", manufacturingCost: 500, price: 100 }, { item: "def", manufacturingCost: 300, price: 450 }, { item: "ghi", manufacturingCost: 400, price: 120 } ]);
Beispiel für eine Abfrage
db.inventory.find({ $expr: { $gt: ["$manufacturingCost", "$price"] } })
Ausgabe
{ "_id" : ObjectId("60b9d4d68d2cac581bc5a89a"), "item" : "abc", "manufacturingCost" : 500, "price" : 100 },
{ "_id" : ObjectId("60b9d4d68d2cac581bc5a89c"), "item" : "ghi", "manufacturingCost" : 400, "price" : 120 }
Codebeispiele
Um ein Codebeispiel für die Verwendung des $expr Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten: