Ich habe eine Mongo Sammlung von Nachrichten, die wie folgt aussieht:Mongo Art auf eine berechnete Bedingung
{
'recipients': [],
'unRead': [],
'content': 'Text'
}
Empfänger ist ein Array von Benutzer-IDs und ungelesen ist ein Array aller Benutzer, die noch nicht die geöffnet Botschaft. Das funktioniert wie beabsichtigt, aber ich brauche die Liste aller Nachrichten abzufragen, so dass sie die ersten 20 Ergebnisse zurückgibt, Priorisierung der ungelesenen diejenigen zuerst, so etwas wie:
db.messages.find({recipients: {$elemMatch: userID} })
.sort({unRead: {$elemMatch: userID}})
.limit(20)
Aber das funktioniert nicht. Wie lassen sich die Ergebnisse am besten priorisieren, je nachdem, ob sie bestimmten Kriterien entsprechen?
Das hat perfekt funktioniert. Vielen Dank! Der einzige Kommentar, den ich machen werde, ist, dass Mongo einen Fehler geworfen hat, bis ich $ setIsSubSet zu $ setIsSubset änderte. – beatniknight
@beatniknight Typisch für mich. Der Dokumentationslink war richtig, aber mein camelCase-Gehirn sagt immer, es seien zwei Wörter und tippt es so ein. –