Wie führe ich den SQL-Join in MongoDB aus?
Nehmen wir an, Sie haben zwei Sammlungen (Benutzer und Kommentare), und ich möchte alle Kommentare mit pid=444 zusammen mit den Benutzerinformationen für jeden abrufen.
comments
{ uid:12345, pid:444, comment="blah" }
{ uid:12345, pid:888, comment="asdf" }
{ uid:99999, pid:444, comment="qwer" }
users
{ uid:12345, name:"john" }
{ uid:99999, name:"mia" }
Gibt es eine Möglichkeit, alle Kommentare mit einem bestimmten Feld (z. B. ...find({pid:444}) ) und die mit jedem Kommentar verknüpften Benutzerinformationen in einem Rutsch zu finden?
Im Moment erhalte ich zuerst die Kommentare, die meinen Kriterien entsprechen, dann finde ich alle uid's in diesem Ergebnissatz heraus, erhalte die Benutzerobjekte und führe sie mit den Ergebnissen des Kommentars zusammen. Es scheint, dass ich das falsch mache.
67 Stimmen
Die letzte Antwort auf diese Frage ist wahrscheinlich die wichtigste, da MongoDB 3.2+ eine Join-Lösung namens $lookup implementiert hat. Ich dachte, ich würde sie hier einfügen, weil vielleicht nicht jeder bis zum Ende liest. stackoverflow.com/a/33511166/2593330
10 Stimmen
Richtig, $Nachschlag wurde in MongoDB 3.2 eingeführt. Einzelheiten finden Sie unter docs.mongodb.org/master/reference/operator/aggregation/lookup/
0 Stimmen
Konvertieren Sie eine beliebige Abfrage in Mongo und prüfen Sie die Antwort: stackoverflow.com/questions/68155715/
2 Stimmen
Ich glaube, die ursprüngliche Absicht von NoSQL war, dass man Daten so speichert, wie man sie abrufen möchte. Also speichern Sie sie auf diese Weise und rufen Sie sie auf diese Weise ab