これを行うことができます:
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
これにより、時間に基づいてコレクションが並べ替えられ、セッションIDでグループ化されます。各セッションIDグループには、メッセージとメッセージの時刻を含むサブドキュメントの配列があります。並べ替えてからプッシュすると、メッセージ配列内の時間順にメッセージが並べ替えられます。