ass*_*z84 1 sorting mongodb aggregation-framework
我有以下文件结构......
{
"id":"documentID"
"sessionId":"sometext"
"msg":"sometext"
"time":"date"
}
Run Code Online (Sandbox Code Playgroud)
我想聚合文档sessionId,每个会话的结果应该包含与按时间排序的会话相关的消息集.
使用MongoDB聚合框架我该如何实现?
我试图先排序然后分组,但每个会话中的消息由于某种原因没有排序:
{ $sort: { "time": 1 } },
{ "$group" : {
"_id" : "$sessionId",
"msgs" : { "$addToSet" : "$msg" }
} }
Run Code Online (Sandbox Code Playgroud)
有什么建议?你的回答非常感谢.
你可以这样做:
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
Run Code Online (Sandbox Code Playgroud)
这将基于时间对集合进行排序,然后逐个会话ID.每个会话ID组都有一个子文档数组,其中包含消息的消息和时间.通过排序然后推送消息将按时间在消息数组中排序.
| 归档时间: |
|
| 查看次数: |
5873 次 |
| 最近记录: |