Habe zwei Collectionen, Tags und Personen.
Tags-Modell:
%Vor%Personenmodell:
%Vor%Ich möchte eine Abfrage, die alle Tags zurückgibt, die im Personenmodell verwendet werden. Alle Dokumente.
Etwas wie
%Vor%Oder sollte ich irgendwie den aggregierten Ansatz dazu verwenden?
Für ein bestimmtes Personendokument können Sie die Funktion Wenn Sie beispielsweise nach Personen suchen möchten, die ein Tag mit 'MongoDB' oder 'Node JS' haben, können Sie die Abfrageoption in die Funktionsüberladung Wenn Sie möchten, dass alle Tags in Für eine bestimmte Person wenden Sie dann eine Eine weitere Problemumgehung, wenn Sie MongoDB-Versionen & gt; = 2.6 oder & lt; = 3.0 verwenden, die keine Unterstützung für populate()
wie populate()
wie folgt einfügen: "project.tags"
für alle Personen vorhanden sind, dann ist Aggregation Framework der richtige Weg. Erwägen Sie, diese Pipeline für die Personenkollektion auszuführen, und verwenden Sie die $lookup
-Operator, um einen linken Join in der Tag-Sammlung zu machen: $match
Pipeline als ersten Schritt zum Filtern der Dokumente: $lookup
füllt die Ergebnisse der Aggregation als:
Wenn Sie MongoDb Version 3.2 verwenden, können Sie $ lookup verwenden, um ein linker äußerer Join.
Tags und Links mongodb aggregation-framework mongodb-query mongoose