2013-10-11 59 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的设计理念是客户端应该处理大部分这种数据操作。我不确定你使用的是什么语言,但大多数都有一种方法来反转数组或向后遍历列表 - 这应该在这里工作得很好。

相关问题