Bạn có thể làm điều này:
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
Điều này sẽ sắp xếp bộ sưu tập dựa trên thời gian sau đó nhóm theo id phiên. Mỗi nhóm ID phiên sẽ có một mảng tài liệu con chứa thông báo và thời gian của thông báo. Bằng cách sắp xếp sau đó đẩy các tin nhắn sẽ được sắp xếp theo thời gian trong mảng tin nhắn của bạn.