使用Sort,Limit,然后在MongoDB中再次排序

时间:2013-10-11 21:43:05

标签: mongodb sorting

我正在使用MongoDB创建聊天应用。基本上我需要检索最新的20条聊天消息,然后按升序日期显示它们。为了获得最后20条聊天消息,我的代码看起来像这样:

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

但这会使消息的顺序相反。

有没有办法在单个查询中执行此操作?我知道这是不正确的,但像db.messages.find().sort({$date:-1}).limit(20).sort({$date:1})

1 个答案:

答案 0 :(得分:1)

由于sort和limit命令实际上是对发送到mongod服务器的查询的修改,因此无法轻松地将两种排序附加到单个查询命令。您可以使用聚合框架在mongodb中执行此操作,但对于这么小的用例来说这不是一个好的解决方案......

在这种情况下,您最好的选择可能只是反转应用程序代码中的结果。实际上,mongodb的设计理念是客户端应该处理这种大多数数据操作。我不确定你使用的语言是什么,但大多数都有办法反向数组或向后遍历列表 - 这应该可以正常工作。