簡體   English   中英

流星和MongoDB通過兩個子對象對Collection進行排序

[英]Meteor and MongoDB sort Collection by two sub objects

我想按用戶和消息時間戳排序未讀消息集合。 我希望所有消息都按最新消息的用戶分組。 我嘗試了以下方法:

UnreadMessages.find({},
   {sort: {'message.timestamp': -1, 'fromUser._id': 1} });

但是,這不會按用戶對郵件進行分組。

有沒有更好的方法可以按用戶分組顯示最新消息? 謝謝。

您的代碼將執行與您想要的相反的操作。

如果是MongoDB,您確實應該這樣做

UnreadMessages.find({},
   {sort: { 'fromUser._id': 1, 'message.timestamp': -1 } });

代替。 但是Minimongo不能那樣工作。

剛剛提交一個新功能,它允許您指定自己的比較器函數。 我自己還沒有嘗試過,但是您應該可以

function myComparatorFn( a, b ) {
   // Standard comparator procedure: return -1 if a < b, 0 if a == b, 1 if a > b
}

UnreadMessages.find({}, {sort: myComparatorFn });

但是,如果我正確地閱讀了提交日志,則看起來該提交幾乎沒有錯過1.3.3版本:-(

另一種更詳盡的解決方案是使用類似https://atmospherejs.com/zvictor/mongodb-server-aggregation的內容 ,然后在服務器上運行帶有$ group的MongoDB聚合管道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM