我有一个包含以下文档的集合:
{
"conversation_id" : 1,
"message_id" : 4, //Message number inside the conversation
"text" : "..."
}
如何从会话ID的数组中获取最新消息?
答案 0 :(得分:1)
您可以使用aggregation来匹配数组中的对话ID,根据message_id
执行降序$sort,然后$group
为每个对话执行第一项:
var conversationIds = [1, 2];
db.conversations.aggregate({
$match: {
"conversation_id": {
"$in": conversationIds
}
}
}, {
$sort: {
"message_id": -1
}
}, {
$group: {
_id: "$conversation_id",
message_id: {
$first: "$message_id"
},
document: {
$first: "$$ROOT"
}
}
})
答案 1 :(得分:0)
创建文档时,您必须添加名为created
的新属性。然后,当您查询特定会话时,可以在created
中提供的时间戳上对其进行排序。
您应该可以对_id
进行排序,并且_id
可以按照预先定义的方式进行排序。