Ben şuna benzer mesajların Mongo koleksiyona sahip:Mongo sıralama üzerinde hesaplanan koşul
{
'recipients': [],
'unRead': [],
'content': 'Text'
}
Alıcılar kullanıcı kimlikleri bir dizidir ve okunmamış henüz açmadığınız tüm kullanıcıların bir dizidir mesaj. Yani istediğiniz gibi olup, ancak, ilk 20 sonuç döndürür, böylece tüm mesajların listesini sorgulamak gerekiyor gibi, ilk şey okunmamış olanları öncelik:
db.messages.find({recipients: {$elemMatch: userID} })
.sort({unRead: {$elemMatch: userID}})
.limit(20)
Ama bu işe yaramaz. Sonuçları belirli bir kritere uyup uymadıklarına göre önceliklendirmenin en iyi yolu nedir? Belirli kriterlere göre hiç "ağırlık" sonuç ya da bir "tür" dahilinde "hesaplanmış değeri" karşı herhangi bir istiyorsanız
Bu mükemmel bir şekilde çalıştı. Teşekkür ederim! Yapacağım tek yorum, $ setIsSubSet'i $ setIsSubset olarak değiştirene kadar Mongo bir hata attı. – beatniknight
@beatniknight Tipik ben. Belge bağlantısı doğruydu ama camelCase beynim iki kelimeyi söyleyip duruyor ve bu şekilde yazmayı sürdürüyor. –