Ich habe eine große Sammlung Messages
, wie so genannt:Wie wird nur das erste Vorkommen einer ID mit Mongoose zurückgegeben?
{
user: 94fg844f,
event: null,
group: null,
name: "Jake",
text: "Hello world"
}, {
user: fje93jrg4,
event: null,
group: null,
name: "Bob"
text: "Testing"
}, {
user: fje93jrg4,
event: null,
group: null,
name: "Bob"
text: "Text here"
}, {
user: null,
event: d0j3n9fn3,
group: null,
name: "My Event"
text: "Testing 2"
}, {
user: null,
event: d0j3n9fn3,
group: null,
name: "My Event"
text: "Another text"
}
Ich brauche das erste Auftreten der Benutzer, Veranstaltungen und Gruppen zu erhalten.
Da beispielsweise Benutzer fje93jrg4
zweimal auftritt, ich will nur das Dokument wieder mit dem Text von Testing
seit dem bekommen mit dem Text von Text here
älter ist als sie. Dasselbe gilt für die event
von d0j3n9fn3
. Es tritt zweimal auf, obwohl ich nur das erste Dokument davon mit dem Text Testing 2
erhalten möchte.
Ich sah in distinct
obwohl es scheint nur einen Suchbegriff zu unterstützen, wie user
statt user
, event
und group
.
Das Endergebnis der oben wäre:
{
user: 94fg844f,
event: null,
group: null,
name: "Jake",
text: "Hello world"
}, {
user: fje93jrg4,
event: null,
group: null,
name: "Bob"
text: "Testing"
}, , {
user: null,
event: d0j3n9fn3,
group: null,
name: "My Event"
text: "Testing 2"
}
Meine Vermutung ist, dass ich wahrscheinlich ein aggregate
mit $first
oder etwas in diese Richtung verwenden werden müssen. Das Problem mit 3 verschiedenen Abfragen ist, dass ich ein Limit anwenden muss, damit ich immer 10 Ergebnisse zurückbekomme. Zum Beispiel könnte es keine aktuellen group
s in der Mischung geben, nur event
s und user
s.
Könnten Sie zusammen die drei Such anhängen? Auch diese 3 Suchen scheinen sehr unterschiedlich zu sein. Ein Array für die Ausgabe erscheint fast unpassend, weil der Index bedeutungslos ist. – 4castle
@ 4castle - Nur damit kann ein Limit nicht angewendet werden. – Fizzix
Wie identifizieren Sie das erste und letzte Dokument für jeden Benutzer. Sie können sich nicht auf die Reihenfolge der Dokumente in der Sammlung verlassen. – styvane