Ich habe ein Chat
Modell, das eine messages
Array hat, die Message
s hält. Jede Message
hat sowohl eine dateSent
Eigenschaft als auch eine dateViewed
Eigenschaft. Die Message
Artikel sind eingebettet, nicht verwiesen.Mungo sortieren nach Daten von Array
Wie kann ich irgendwie Chat
s nach jüngsten nicht gesehenMessage
(dh leer dateViewed
) und dann durch dateSent
? (Man denke an Facebook Messenger Verhalten ...)
Dies ist, was ich bisher versucht (beachten Sie, dass Chat
auch eine users
Array):
Chat.find({users._id: userId}).sort({messages.dateViewed: -1, messages.dateSent: -1}).exec(function(err, chats){
// handle err
// handle no docs found
// handle docs found
});
Die oben nicht zu funktionieren scheint, wie die Chat
s kommen in einer anderen Reihenfolge heraus (das gleiche wie ohne sort()
). Irgendwelche Gedanken?
EDIT: Die vorgeschlagene Antwort half mir nicht, weil ich will nicht die Message
Objekte in der message
Array sortieren, sondern die Chats
aus der Abfrage, durch die in dem Message
Objekt resultierenden sortiert sie Halten Sie in einem messages
Array.
Ich bin nicht sicher, wie 'Nachrichten .dateViewd: -1' wird interpretiert, ich würde vorschlagen, zumindest Zitate hinzuzufügen, nur um sicher zu gehen, dass alles in Ordnung ist :) –
@AndreyPopov Ja, ich habe es in '{" messages.dateViewed ": -1," messages.dateSent ": -1}' geändert, funktioniert aber immer noch nicht ... – Joum
Mögliche Duplikate von [Mongodb: Dokumente nach Array-Objekten sortieren] (http://stackoverflow.com/questions/5315658/mongodb-sort-documents-by-array-objects) – TomG