MongoDB $ Lookup

MongoDB $ Lookup

Die Dokumente werden an die Pipeline mit mehreren Operatoren wie $ Match übergeben und $ existieren, um die Daten zu aggregieren. Der $ -Sookup -Operator ist einer der Operatoren der Aggregation Pipeline, die es ermöglicht, die Daten mit einer Eingabesammlung verbunden zu werden. Der MongoDB -Lookup -Operator verwendet den linken äußeren Join -Vorgang, um die Daten von einem Dokument zu einem anderen zu kombinieren. In einfachen Worten ermöglicht die $ -Sookup. Der Hauptvorteil des MongoDB $ -Sookup -Operator. Wir werden in diesem Artikel über das operative Prinzip von MongoDB $ Lookup diskutieren.

Wie funktioniert der MongoDB $ -Sookup -Operator??

Wie bereits erwähnt, ermöglicht der $ -Sookup -Operator in MongoDB, die Dokumente aus verschiedenen Sammlungen in derselben Datenbank zu kombinieren. Der $ -Sookup-Operator behandelt die nicht verwandten Unter-Querien sowie die Gleichstellungsübereinstimmungen. Jede Übereinstimmung mit dem $ -Sookup -Operator hat eine andere Struktur, in der wir uns mit der Beispielimplementierung ansehen werden. Wir legen die Kandidatensammlung fest, die wir in unserem Beispiel verwenden, um den $ -Sookup -Operator auszuführen. Hier fügen wir zwei Dokumente mit der Methode InsertMany () ein, die die folgenden Felder enthalten:

db.Kandidaten.InsertMany (
[

CANDIDIDE_ID: 01,
"Name": "Andrew",
"RollNumber": 099912,
"Test": "MBBS",
"AcademicStatus": ["Schulmarks": "A", "College Bgrades": "B"],
"Status": "berechtigt"
,

Candidate_id: 02,
"Name": "Stella",
"RollNumber": 0012123,
"Test": "BDS",
"AcademicStatus": ["Schulgrades": "A+", "College Bgrades": "a"],
"Status": "berechtigt"

]
);

Die eingefügten Abfragenergebnisse sollten in der MongoDB -Sammlung so angezeigt werden:

Als nächstes erstellen wir eine andere Sammlung mit dem Titel „CandidateInfo“. Wir fügen das Dokument in diese Sammlung ein, indem wir die InsertMany () -Methode verwenden.

db.CandidateInfo.InsertMany (
[

"Candidate_Name": "Andrew",
"Alter": 27,
"Geschlecht männlich",
"Test": "MBBS",
"Stadt": "Kalifornien"
,

"Candidate_Name": "Stella",
"Alter": 25,
"Geschlecht Weiblich",
"Test": "BDS",
"Stadt": "Houston"

]
);

Die Ergebnisse des Hinzufügens des Dokuments zur Sammlung „CandidateInfo“ geben an, dass die Dokumente ordnungsgemäß eingefügt werden. Jetzt können wir beide Sammlungen verwenden, um mit dem $ -Sookup -Operator zu verknüpfen.

Beispiel 1: Verwenden des MongoDB $ -Sookup -Operators für die Gleichstellungsübereinstimmung

Der $ Lookup -Operator von MongoDB wird in diesem Beispiel verwendet, um die Vorgänge in einem Schlüssel aus der angegebenen Datenbank und der kombinierten Datenbank zusammenzuführen. Hier geben wir die Abfrage zur Gleichstellung der Übereinstimmung der Kandidatensammlung mit der Aggregate () -Methode an. Die Aggregate () -Methode wird mit dem $ -Sookup -Operator weiter implementiert. Der $ -Sookup -Operator enthält unterschiedliche Einschränkungen, die alle zur Kombination der angegebenen Sammlung verpflichtet sind.

Die erste eingesetzte Einschränkung ist die Einschränkung "From", die mit einem Namen der Sammlung, "CandidateInfo", zugeordnet ist, um verbunden zu werden. Anschließend setzen wir die Einschränkung "Lokalfeld", in der der Name des Felds "Name" aus dem Dokument der angegebenen Sammlung zugewiesen ist. Das lokale Feld ist definiert als das Feld in der lokalen Sammlung, die kombiniert werden soll. Als Nächst. Danach wird die „AS“ -Einbeschränkung verwendet, um das Array der übereinstimmenden Ergebnisse des $ -Sookup -Operators zu generieren.

db.Kandidaten.Aggregat([
$ Lookup:

Von: "CandidateInfo",
Lokalfeld: "Name",
Foreignfield: "Candidate_name",
AS: "CandidateInfo"


]))

Die Ausgabe der $ -Sookup -Abfrage kombiniert die Übereinstimmungen der Kollektion „CandidateInfo“ zur Kollektion „Kandidaten“ unter Verwendung der Feldwerte „Name“ und „Candidate_Name“ in den Sammlungen „Kandidaten“ und „CandidateInfo“.

Beispiel 2: Verwenden des MongoDB $ -Sookup -Operators mit den Auswahlkriterien

Die Gleichstellungsübereinstimmung der Sammlungen wird im vorherigen Beispiel erreicht. Jetzt verwenden wir den $ -Sookup -Operator mit dem bedingten Bediener, um sich den Sammlungen anzuschließen. Wir geben einen $ -Sookup -Operator in der Aggregationsmethode auf der Kollektion „CandidateInfo“ an. In der Aggregate () -Methode haben wir den $ -Sookup -Operator, der mit den verschiedenen Einschränkungen für die Zusammenhänge der Sammlungen angegeben ist.

Zunächst definieren wir die "From" -Einbeschränkung, die mit einer anderen Sammlung definiert ist, bei der es sich um "Kandidaten" handelt. Beachten Sie, dass wir die Einschränkungen "Let" und die "Pipeline" -Ergänge nach der "From" -Einbeschränkung anstelle des örtlichen Feldes und dem Außenfeld verwenden. Die Einschränkung "Let" wird mit der Variablen "c_age" deklariert, die mit einem Feld "$ ay" zugewiesen ist. Die Variable "c_test" wird deklariert, die den Feld "$ test" enthält. Wir deklarieren diese Variablen, um die Felder aus den Dokumenten in der kombinierten Sammlung abzurufen, die in die Pipeline übergeben werden.

Danach erstellen wir das Attribut „Pipeline“, bei dem die bedingten Operatoren eingegeben werden. Die Verwendung der Pipeline -Einschränkung besteht darin, den Join -Vorgang über die gegebene Sammlung auszuführen. Anschließend ist die Pipeline mit der $ Match -Phase zugeordnet. Die $ EXPR -Stufe vergleicht die Felder anhand der Eingabevariablen innerhalb des Attributs „LET“. Die $ EXPR -Stufe wird mit dem $ und dem Bediener deklariert, wo wir das "$ lt: [" $ ay "," $$ c_age "" und $ eq: ["$$ c_test", "$ test" bereitstellen, "$ test" ] Ausdrücke. Wir können die Sammlung nur auf diese Weise für den $ -Sookup -Operator vergleichen. Die Ausdrücke werden mit dem Doppel -Dollar -Zeichen "$$" angegeben, um auf die Variablen zu verweisen, die in der Einschränkung "Let" definiert sind, und das Single -Dollar -Zeichen "$" zeigt ein fremdes Feld an. Das Pipeline -Attribut wird dann geschlossen. Zuletzt definieren wir das "AS" -attribut des $ -Sookup -Operator.

db.CandidateInfo.Aggregat([
$ Lookup:

Von: "Kandidat",
Lassen Sie: c_age: "$ ay", c_test: "$ test",
Pipeline: [
$ Match:
$ expr:
$ und::
[
$ lt: ["$ ay", "$$ c_age"],
$ EQ: ["$$ c_test", "$ test"]
]



],
AS: "Kandidaten"


])).hübsch();

Die folgende Ausgabe wird erhalten, indem die $ -Sookup -Operator -Pipeline mit den Auswahlkriterien durchgeführt wird:

Beispiel 3: Verwenden des MongoDB $ -Sookup -Operators mit dem $ mergeObject -Operator

Die $ merge -Objekte werden verwendet, um die Dokumente in der angegebenen Sammlung zu ändern, die von den Einschränkungen abhängen,. Hier haben wir den $ Lookup -Operator zuerst mit seinen Einschränkungen eingestellt. Dann nennen wir das $ mergeObject, das auch seine Einschränkung für die Ausführung der modifizierten Sammlung festlegt, die vom $ -Sookup -Operator zurückgegeben wird. In der folgenden Anfrage wird der $ -Sookup -Betreiber verwendet, um der „Kandidaten“ -Kollektion aus dem „CandidateInfo“ mit dem Localfield und dem Foreignfield als „Test“ beizutragen. Anschließend verwenden wir die $ ersatzteile Stufe, die die $ mergeObjects aufruft.

db.Kandidaten.aggregiert ([

$ suchup:
Von: "CandidateInfo",
Lokalfeld: "Test",
Foreignfield: "Test",
AS: "Fromcandi"

,

$ Ersatzer: newroot: $ mergeObjects: [$ arrayElemat: ["$ fromcandi", 0], "$$ root"]
,
$ project: "fromcandi": 0
]))

Nachdem wir diesen $ -Sookup -Vorgang mit dem $ mergeObject abfragen, haben wir die folgenden Ergebnisse:

Abschluss

Der $ -Sookup -Operator hilft bei der Identifizierung der entsprechenden Daten und bei der Erwerfung der gewünschten Ergebnisse. Wir haben drei Beispiele mit dem $ Lookup -Operator implementiert. Im ersten Beispiel haben wir den $ -Sookup -Operator für die Gleichstellungsübereinstimmung verwendet. Anschließend haben wir ein Beispiel, bei dem die Bedingungen verwendet werden, um die Ergebnisse der Lookup -Operator auszuführen. Wir haben auch die $ mergeObjects -Phase mit dem $ -Sookup -Operator verwendet, um die Dokumente zu ändern.