MongoDB按升序查询最近20条(最近)消息
存储聊天信息的My collection Schema正在跳过一些字段:MongoDB按升序查询最近20条(最近)消息,mongodb,mongodb-query,Mongodb,Mongodb Query,存储聊天信息的My collection Schema正在跳过一些字段: timestamp_ms: epoch time to send message in milliseconds text: string text sender: sender id convId: conversation id 当用户打开对话时,我想显示最后5条消息。因此,我需要一个查询,它选择最近的5条消息,然后按时间戳的升序返回它们 例如,如果我有时间戳为1,2,3,4,5,6,7,8,9的行,那么我希望结果为
timestamp_ms: epoch time to send message in milliseconds
text: string text
sender: sender id
convId: conversation id
当用户打开对话时,我想显示最后5条消息。因此,我需要一个查询,它选择最近的5条消息,然后按时间戳的升序返回它们
例如,如果我有时间戳为1,2,3,4,5,6,7,8,9的行,那么我希望结果为5,6,7,8,9
我写的最接近的问题
db.messages.find{convId:xyz}.sort{timestamp_ms:-1}.limit5
以降序给出结果,需要在内存中按9,8,7,6,5进行排序。有没有办法返回这些按5,6,7,8,9排序的记录
db.messages.find{convId:xyz}.sort{timestamp_ms:-1}.limit5.sort{timestamp_ms:1}
返回1,2,3,4,5
使用聚合管道可以解决这个问题吗?是的,聚合框架就是您的朋友。像这样的方法应该会奏效:
db.messages.aggregate([
{$match: {convId:"xyz"}},
{$sort:{timestamp_ms:-1}},
{$limit:5},
{$sort:{timestamp_ms:1}}
])