Database

[{from:"A",to:"B",number:1,message:"A-B Test 1"},{from:"B",to:"A",number:2,message:"A-B Test 2"},{from:"A",to:"B",number:3,message:"A-B Test 3"},{from:"C",to:"A",number:1,message:"A-C Test 1"},{from:"A",to:"C",number:2,message:"A-C Test 2"},{from:"C",to:"A",number:3,message:"A-C Test 3"},{from:"A",to:"B",number:4,message:"A-B Test 4"},]

Query

db.collection.aggregate([{$sort:{number:-1}},{$group:{_id:{userConcerned:{$cond:{if:{$eq:["$to","A"]},then:"$to",else:"$from"}},interlocutor:{$cond:{if:{$eq:["$to","A"]},then:"$from",else:"$to"}}},num:{$first:"$number"},from:{$first:"$from"},to:{$first:"$to"},lastMessage:{$first:"$message"}}}])

Result