2013-10-11 109 views
1

我正在使用MongoDB創建一個聊天應用程序。基本上我需要檢索最新的20條聊天消息,然後按升序顯示它們。爲了獲得最後20條聊天消息,我的代碼看起來像這樣:使用排序,限制,然後在MongoDB中再次排序

db.messages.find().sort({$date:-1}).limit(20) 

但這會使消息以相反的順序出現。

有沒有辦法在單個查詢中做到這一點?我知道這是不正確的,但像db.messages.find().sort({$date:-1}).limit(20).sort({$date:1})

回答

1

因爲排序和限制命令實際上是對發送到mongod服務器的查詢的修改,所以沒有辦法輕鬆地將兩種排序附加到單個查詢命令。您可以使用的聚合框架在MongoDB中做到這一點,但是這不會是這樣一個小的使用情況很好的解決方案......

在這種情況下,最好的辦法可能是剛剛扭轉結果你的應用代碼。實際上,mongodb的設計理念是客戶端應該處理大部分這種數據操作。我不確定你使用的是什麼語言,但大多數都有一種方法來反轉數組或向後遍歷列表 - 這應該在這裏工作得很好。

相關問題