Wie der $ -Filterbetreiber in MongoDB verwendet wird
Der $ -Filterbetreiber von MongoDB wird verwendet, um die Array -Daten gemäß der angegebenen bedingten Anweisung herauszufiltern. Die Verwendung des $ -Filterbetreibers arbeitet zu den Dokumenten, die in die angegebene Sammlung von MongoDB eingefügt werden. Hier setzen wir die InsertMany () -MongoDB -Abfrage ein, um drei Dokumente in die "Cricket" -Kollektion einzufügen. Jeder Datensatz enthält drei Felder - "_id", "Player" und das "RunsRecord" -, die als Array festgelegt werden. Das Dokument -Einfügen -Format ist im Folgenden dargestellt:
db.Kricket.InsertMany ([
"_id": 1,
"Spieler": "Ravi",
"RunsRecord": [100, 50, 70],
"Streichhölzer" :
"Match1": "Worldcup",
"Jahr": "2000"
,
"_id": 2,
"Spieler": "Andrew",
"RunsRecord": [150, 90, 55]
,
"_id": 3,
"Spieler": "Smith",
"RunsRecord": [80, 99, 45]
,
"_id": 4,
"Spieler": "Alex",
"RunsRecord": []
])
Die Dokumente in der Cricket -Sammlung werden erfolgreich eingefügt, wie in der folgenden Ausgabe gezeigt:
Anerkannt: True, InisedIds: '0': 1, '1': 2, '2': 3, '3': 4
Beispiel 1: MongoDB verwendet den $ -Filterbetreiber in MongoDB
Der Basis -$ -Filterbetreiber des MongoDB -Beispiels ist in diesem Abschnitt angegeben. Wir setzen eine Abfrage fest, bei der der $ -Projektbetreiber bei der Aggregat -Methode aufgerufen wird. Wir rufen den $ Filter -Betreiber innerhalb des $ Project -Betreibers auf. Der $ -Filterbetreiber wird mit seinem Parameter weiter angegeben. Der Parameter „Eingabe“ wird mit dem Namen "$ runsRecord" -Array mit dem Feld "$" festgelegt, um die Daten daraus zu extrahieren. Anschließend verwenden wir den Parameter "AS", um den Titel der Rückgabevariablen "RunsRecord" zu geben, um den Titel zu verleihen. Diese Variable wird dann auf den Parameter "Cond" mit dem Doppel -Dollar -Zeichen "$$" verwiesen, "$$". Als nächstes kommt der Parameter „Cond“, bei dem der Ausdruck als "$ gt: [" $$ runsrecord ", 50] zugewiesen wird". Die Bedingungen implizieren, dass der Operator „$ gt“ das Array -Element erhält, das größer als der Wert von „50“ im Bereich „RunsRecord“ ist.
db.Kricket.Aggregat([
$ project:
Highruns:
$ filter:
Eingabe: "$ runsrecord",
AS: "RunsRecord",
cond: $ gt: ["$$ runsRecord", 50]
]))
Die Ergebnisse der folgenden $ Filter -Abfrage geben nur die Werte aus dem Array zurück, die größer sind, „50“. Der Wert, der weniger als „50“ beträgt.
[
_id: 1, Highruns: [100, 70],
_id: 2, Highruns: [150, 90, 55],
_id: 3, Highruns: [80, 99],
_id: 4, Highruns: []
]
Beispiel 2: MongoDB verwendet den $ -Filterbetreiber, um das Feld Nicht-Existenz zu filtern
Jetzt nehmen wir einen Fall an, in dem der $ -Filterbetreiber auf das Feld angewendet wird, das in keiner eingefügten Sammeldokumente vorhanden ist. Hier haben wir eine Abfrage, bei der der $ -Filterbetreiber mit den Parametern verwendet wird. Der Eingabeparameter wird mit dem Feld "$ Gehalt" festgelegt, um das Dokument zu filtern. Anschließend verwenden wir den "AS" optionalen Parameter, der auch mit dem Variablennamen „Gehalt“ angegeben ist, das im Eingabearray als Element verwendet wird. Danach haben wir einen bedingten Ausdruck im Parameter „Cond“ des $ Filters. Der $ -Filterbetreiber filtert das Array -Element basierend auf der angegebenen Bedingung "$ gte: [" $$ Gehalt ", 6000]" ".
db.Kricket.Aggregat([
$ Match: _id: $ in: [2]
,
$ project:
Highruns:
$ filter:
Eingabe: "$ Gehalt",
AS: "Gehalt",
cond: $ gte: ["$$ Gehalt", 6000]
]))
Wie wir wissen, ist das bereitgestellte "Gehalt" -Feld nicht in dem Dokument vorhanden, dessen "_id" "2" ist, sodass die Ausgabe der vorherigen Abfrage des $ -Filterbetreibers einen Nullwert gibt.
[_id: 2, Highruns: null]
Beispiel 3: MongoDB verwendet den $ Filter -Operator, um das leere Array zu filtern
Als nächstes ist das Szenario, in dem der $ -Filter über dem leeren Array verwendet wird. Der $ -Filterbetreiber gibt ein leeres Array zurück, wenn eines der Dokumente in der Sammlung ein leeres Array hat. Wir haben die folgende Abfrage von $ Filter -Operator. Wir haben den $ Match -Operator zuerst, wobei der Ausdruck „_id: $ in: [4]“ als zufrieden sein kann. Wenn der $ im Operator den Wert von „4“ für das Feld "_id" findet, fährt der nächste Bediener fort. Anschließend haben wir einen $ -Filterbetreiber, der die Elementarray basierend auf der angegebenen Bedingung filtert, nämlich "$ gt: [" $$ runsRecord ", 45]".
db.Kricket.Aggregat([
$ Match: _id: $ in: [4]
,
$ project:
Highruns:
$ filter:
Eingabe: "$ runsrecord",
AS: "RunsRecord",
cond: $ gt: ["$$ runsRecord", 45]
]))
Das "_id: 4" hat das Feld "RunsRecord" -Array, das leer ist. Deshalb gibt es beim Ausführen der Abfrage das leere Array wie folgt aus:
[_id: 4, Highruns: []]
Beispiel 4: MongoDB verwendet den $ Filter -Operator in MongoDB mit dem optionalen variablen Namen
Wir setzen einen Titel für die Variable in den vorhergehenden Instanzen mit dem Argument "AS". Wenn das Argument "As" nicht mit einem variablen Namen festgelegt wird, wird die Variable "$ this" standardmäßig von MongoDB festgelegt. Lassen Sie uns das Beispiel für diese Anweisung haben. Wir stimmen mit dem Dokument überein, indem wir den $ Match -Operator aufrufen, in dem wir ein Feld „_id“ haben, in dem die Werte festgelegt werden. Wir weisen dem „$ -Projekt“ -Betreiber einen $ -Filterbetreiber zu, bei dem der $ -Filterbetreiber mit den Parametern aufgerufen wird. Hier haben wir einen Parameter "Eingabe" mit dem Namen "$ runsRecord" -Array -Feld. Anschließend wenden wir den Parameter „Cond“ mit dem angegebenen Zustand an. Die Bedingung wird als "Cond: $ lt: [" $$ this ", 80] festgelegt". Dieses Mal wird der $ LT -Operator verwendet, um den Wert zu ermitteln, der geringer ist als der Wert von „80“. Beachten Sie, dass wir hier anstelle eines Variablennamens "$$ runsRecord" den Standard -Variablennamen "$$ this" verwenden, der die resultierende Ausgabe nicht beeinflusst.
db.Kricket.Aggregat([
$ Match: _id: $ in: [1, 2, 3, 4]
,
$ project:
Highruns:
$ filter:
Eingabe: "$ runsrecord",
cond: $ lt: ["$$ this", 80]
]))
Der $ -Filterbetreiber filtert das angegebene Array mit der $ dieser Variablen auf die gleiche Weise wie bei der angegebenen Variablen.
[
_id: 1, Highruns: [50, 70],
_id: 2, Highruns: [55],
_id: 3, Highruns: [45],
_id: 4, Highruns: []
]
Beispiel 5: MongoDB verwendet den $ -Filterbetreiber, um mit mehreren Bedingungen zu filtern
Wir können dem $ -Filterbetreiber mehr als eine Bedingung zur Verfügung stellen, um nur die Dokumente herauszufiltern, die der angegebenen Bedingung entsprechen. Hier definieren wir den $ -Filterbetreiber, bei dem der Parameter „Cond“ $ und Bediener verwendet wird. Der $ und den Bediener wird mit den verschiedenen Bedingungen wie "$ gte: [" $$ runsRecord ", 45]" und "$ lte: [" $$ runsRecord ", 99]" festgelegt. Der $ und den Bediener werden verwendet, die beide Bedingungen als wahr erfordern.
db.Kricket.Aggregat([
$ project:
Highruns:
$ filter:
Eingabe: "$ runsrecord",
AS: "RunsRecord",
cond: $ und: [
$ gte: ["$$ runsRecord", 45],
$ lte: ["$$ runsrecord", 99]
]
]))
Mit den mehreren Bedingungen filtern wir das übereinstimmende Dokument im Folgenden heraus:
[
_id: 1, Highruns: [50, 70],
_id: 2, Highruns: [90, 55],
_id: 3, Highruns: [80, 99, 45],
_id: 4, Highruns: []
]
Abschluss
Wir haben diesen Artikel untersucht, bei dem es um den $ -Filterbetreiber von MongoDB geht. Hier haben wir die Implementierung des MongoDB -Skripts des $ -Filterbetreibers zur Filterung der angegebenen Daten zur Verfügung gestellt. Wir haben zuerst die grundlegende Nutzung des $ -Filterbetreibers demonstriert. Dann haben wir den $ -Filterbetreiber über das Dokument verwendet, dessen Feld nicht im Dokument hinzugefügt wird. Das Feld Leer -Array -Feld wird auch am $ -Filterbetreiber bereitgestellt, der das leere Array abholt. Darüber hinaus wird der $ -Filterbetreiber mit der $ dieser Variablen verwendet, die die Standardvariable ist.