Ich benutze MongoDB und Mongoose als meine ODM und ich versuche eine Abfrage mit populate
und group by
in der gleichen Anweisung zu machen.
Hier sind meine einfachen Dokumente Modelle:
%Vor%Ich versuche nur, alle Nachrichten für einen Benutzer zu erhalten, gruppiere es mit jedem Benutzer, mit dem er spricht. Ich habe es so versucht:
%Vor% Leider hat mein Modell leider keine group
Methode. Haben Sie eine Lösung, um das zu erreichen?
Danke.
Die bessere Option, die Sie hier verwenden können, ist .aggregate()
, was im Gegensatz zu den .group()
Methode von MongoDB, die die JavaScript-Engine verwendet, um Ergebnisse zu verarbeiten.
Methoden wie .populate()
werden jedoch nicht direkt unterstützt, und dies ist beabsichtigt, da die Aggregationspipeline und andere Methoden keine Antwort zurückgeben, die auf dem aktuellen Modellschema basiert. Da es falsch wäre anzunehmen, dass Sie das tun, ist es nur eine Antwort auf ein Rohobjekt.
Es gibt jedoch nichts, was Sie davon abhält, die Antwort als Mungo-Dokumente zu "werfen" und dann das Modellformular von % aufzurufen. co_de% mit den erforderlichen Pfaden:
%Vor% Das bringt natürlich nur die .populate()
Nachricht von jedem "von", wie es vom Operator angedeutet wird.
Vielleicht ist das, was Sie wirklich mit "Gruppe von" meinen, eigentlich "sortieren":
%Vor% Da Ihr Kontext "Alle Nachrichten" enthält und nicht etwas, das sonst von einem Gruppierungsoperator impliziert würde, wie beispielsweise mit $first
oder der .aggregate()
-Auflistungsmethode. So gruppieren sich die Nachrichten über die Sortierung und nicht irgendeine Gruppierung.
Letzteres klingt nach dem, was Sie wirklich fragen, aber wenn Sie tatsächlich eine echte "Gruppierung" beabsichtigten, dann gibt es das Aggregationsbeispiel zusammen mit der Verwendung von .group()
.
Tags und Links javascript node.js mongodb aggregation-framework mongoose