我想按用戶和消息時間戳排序未讀消息收集。我希望所有消息都由消息最近的用戶分組。我試過以下內容:流星和MongoDB排序由兩個子對象收集
UnreadMessages.find({},
{sort: {'message.timestamp': -1, 'fromUser._id': 1} });
但是,這不會按用戶分組消息。
有沒有更好的方式來顯示按用戶分組的頂部最新消息?謝謝。
我想按用戶和消息時間戳排序未讀消息收集。我希望所有消息都由消息最近的用戶分組。我試過以下內容:流星和MongoDB排序由兩個子對象收集
UnreadMessages.find({},
{sort: {'message.timestamp': -1, 'fromUser._id': 1} });
但是,這不會按用戶分組消息。
有沒有更好的方式來顯示按用戶分組的頂部最新消息?謝謝。
你的代碼將做你想要的相反。
如果是MongoDB的,你真的應該做
UnreadMessages.find({},
{sort: { 'fromUser._id': 1, 'message.timestamp': -1 } });
代替。但是Minimongo不會那樣工作。
有一個新功能,just got commited,它允許你指定你自己的比較功能。我還沒有嘗試過自己,但你應該能夠做到
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,然後在服務器上運行帶有$組的MongoDB聚合管道。
感謝您的評論。排序不會這樣做。我想我必須做分組。乾杯。 –
我用另一個全新的可能性更新了我的答案.... –
分組和排序是不一樣的,如果你想擁有來自同一用戶的消息彼此相鄰,交換鍵的順序(先按用戶ID排序) – MasterAM