Anda dapat melakukan ini:
db.collection.aggregate(
{$sort:{"time":1}},
{ $group:
{ _id: "$sessionId",
messages: { "$push": {message: "$msg", time: "$time"} }
}
}
)
Ini akan mengurutkan koleksi berdasarkan waktu lalu mengelompokkan berdasarkan id sesi. Setiap grup ID sesi akan memiliki larik sub-dokumen yang berisi pesan dan waktu pesan. Dengan menyortir maka mendorong pesan akan diurutkan berdasarkan waktu dalam array pesan Anda.