Database
[{"_id":ObjectId("5f4a3ae0a7ff491f3024668e"),"isFile":false,"to":ObjectId("5f46325ec483a43d98ae3627"),"from":ObjectId("5f46319ac483a43d98ae3626"),"text":"Hi John,Yash here!","createdAt":{"$date":"2020-08-29T11:24:16.416Z"},"updatedAt":{"$date":"2020-08-29T11:24:16.416Z"},"__v":0},{"_id":ObjectId("5f4a3affa7ff491f3024668f"),"isFile":false,"to":ObjectId("5f46319ac483a43d98ae3626"),"from":ObjectId("5f46325ec483a43d98ae3627"),"text":"hello Yash - John","createdAt":{"$date":"2020-08-29T11:24:47.519Z"},"updatedAt":{"$date":"2020-08-29T11:24:47.519Z"},"__v":0},{"_id":ObjectId("5f4a3b25a7ff491f30246690"),"isFile":false,"to":ObjectId("5f4632c8c483a43d98ae3628"),"from":ObjectId("5f46319ac483a43d98ae3626"),"text":"Hello Don, Yash this side.","createdAt":{"$date":"2020-08-29T11:25:25.067Z"},"updatedAt":{"$date":"2020-08-29T11:25:25.067Z"},"__v":0}]
Query
db.collection.aggregate([{$match:{$or:[{"to":ObjectId("5f46319ac483a43d98ae3626")},{"from":ObjectId("5f46319ac483a43d98ae3626")}]}},{$sort:{updatedAt:-1}},{$group:{_id:{$cond:[{$eq:["$to",ObjectId("5f46319ac483a43d98ae3626")]},{$concat:[{$toString:"$to"}," and ",{$toString:"$from"}]},{$concat:[{$toString:"$from"}," and ",{$toString:"$to"}]}]},updatedAt:{$first:"$updatedAt"},messages:{$push:"$$ROOT"}}},{$sort:{updatedAt:-1}},{$addFields:{messages:{$slice:["$messages",2]}}}])