Vous pouvez le faire :
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
Cela triera la collection en fonction de l'heure, puis groupera par identifiant de session. Chaque groupe d'ID de session aura un tableau de sous-documents qui contiennent le message et l'heure du message. En triant puis en poussant les messages seront classés par heure dans votre tableau de messages.