Führen Sie INNER JOIN in MongoDB mit dem $Lookup-Aggregationsoperator

In MongoDB hat 3.2 den $ Lookup-Operator im Aggregationsframework eingeführt, mit dem LEFT JOIN ausgeführt werden kann.
Bitte beachten Sie, dass MongoDB Daten Betrieb nicht wie
Betriebsdaten in relationaler Datenbank ist, so ist es immer ratsam, relevante Daten zu haben, innerhalb des gleichen Dokuments zu sein
diejenigen, die oft zusammen. In einem bestimmten Fall ist es jedoch erforderlich, aufgrund verschiedener
-Probleme zwei verschiedene Sammlungen einzufügen, um Datenduplizierungen zu vermeiden, für die umfangreiche Aktualisierungsvorgänge erforderlich sind, die in mehreren Sammlungen verwendet werden usw.

JOIN ist einer der Hauptunterschiede zwischen SQL- und NoSQL-Datenbanken, bei denen der Operator $lookup
als MongoDB-Aggregation hilfreich und leistungsstark ist, um JOIN für zwei Sammlungen wie in RDBMS zu erhalten.

MongoDB-Aggregation

Lassen Sie uns weiter sehen:

Syntax:

Erfahren Sie mehr über MEAN Stack
Entwicklung

Wenn Sie aus der RDBMS-Welt kommen, erwarten Sie dies möglicherweise als separates Dokument, das alle Felder aus der lokalen
und der ausländischen Sammlung verknüpft, aber NEIN, alle ausländischen Dokumente werden als Array des lokalen Sammlungsdokuments hinzugefügt. Da alle
Fremddokumente innerhalb des Dokuments hinzugefügt wurden, möchten Sie möglicherweise nur verwenden, wenn eine Anzahl von ausländischen relativen Dokumenten
begrenzt ist und die Größe des Ergebnisdokuments die Dokumentgrößenbeschränkung nicht überschreitet.

Ex:

Angenommen, Sie haben zwei Sammlungen ‚Bestellungen‘ und ‚Produkt‘ mit folgenden Daten.

Bestellungen:

Produkte:

Um nun die Bestellung mit den Produktdetails abzurufen, können wir unten verwenden

Ergebnisdokumente:

Normalerweise kann order mehrere Elemente enthalten, mal sehen, wie Sie $lookup innerhalb des Array-Elements durchführen können.

Lassen Sie uns die Sammlungen so ändern, dass sie wie folgt aussehen

In diesem Fall befinden sich Bestellelemente in einem Array, das
mit dem Operator $unwind abgewickelt werden muss, wodurch ein separates
-Dokument pro Artikel erstellt wird, und Sie können dann eine Suche durchführen. Skript kann wie folgt aussehen.

Ergebnis:

Möglicherweise möchten Sie den Operator $lookup nicht verwenden, um alle Bestellungen für ein bestimmtes Produkt abzurufen, mit anderen Worten Join-Bestellungen für
-Produkte. Im Falle des meistverkauften Produkts haben wir möglicherweise tausende Bestellungen, und alle, die innerhalb eines einzelnen Arrays hinzugefügt wurden, können zu einem Array mit
Dokumentgrößenbeschränkungen führen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

More: