Můžete to udělat takto:
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
Tím se kolekce seřadí podle času a poté se seskupí podle ID relace. Každá skupina ID relace bude mít pole dílčích dokumentů, které obsahují zprávu a čas zprávy. Seřazením a následným stisknutím budou zprávy seřazeny podle času ve vašem poli zpráv.