mongodb - 在 MongoDB 中使用排序、限制,然后再次排序

标签 mongodb sorting

我正在使用 MongoDB 创建一个聊天应用程序。基本上我需要检索最新的 20 条聊天消息,然后按日期升序显示它们。为了获取最后 20 条聊天消息,我的代码如下所示:

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

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

有没有办法在单个查询中做到这一点?我知道这是不正确的,但类似于 db.messages.find().sort({$date:-1}).limit(20).sort({$date:1}) ?

最佳答案

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

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

关于mongodb - 在 MongoDB 中使用排序、限制,然后再次排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327723/

相关文章:

javascript - mongodb/nodejs : using variables in $inc doesn't work

python - Django mongoengine 不连接到远程服务器,总是连接到本地主机

arrays - Elasticsearch 按数组列排序

algorithm - 最坏情况为 O(n) 的基数排序算法

python - 在python中对具有多个小数点的数字进行排序

python - 按格式化为字符串的键对 python 字典进行排序

java - 同一个 Java 类的多个 MongoDB 集合名称

json - MongoDB Compass 中的 JSON 输入意外结束

r - 从R中的mongodb查询多个id

linux - 使用 Unix 排序对多个键进行排序——错误?