【发布时间】:2018-07-26 02:10:45
【问题描述】:
我的集合架构(存储聊天消息)是(跳过一些字段):
timestamp_ms: epoch time to send message in milliseconds
text: string text
sender: sender id
convId: conversation id
当用户打开对话时,我想显示最后 5 条消息。所以我需要一个查询,它选择最近的 5 条消息,然后按 timestamp_ms 升序返回它们
例如,如果我的行的时间戳为:1,2,3,4,5,6,7,8,9 那么我希望结果为 5,6,7,8,9
我写的最接近的查询
db.messages.find({convId:"xyz"}).sort({timestamp_ms:-1}).limit(5)
将结果以降序(需要在内存中排序)为 9,8,7,6,5。有什么方法可以返回这些排序为 5,6,7,8,9 的记录
db.messages.find({convId:"xyz"}).sort({timestamp_ms:-1}).limit(5).sort({timestamp_ms:1})
返回 1,2,3,4,5
这可以使用聚合管道解决吗?
【问题讨论】:
标签: mongodb mongodb-query