Можете да направите това:
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
Това ще сортира колекцията въз основа на времето, след което ще групира по идентификатор на сесия. Всяка група ID на сесия ще има масив от поддокументи, които съдържат съобщението и часа на съобщението. Чрез сортиране и след това натискане съобщенията ще бъдат подредени по време във вашия масив от съобщения.