Database
[{"id":1,"sender":"A","receiver":"B"},{"id":3,"sender":"B","receiver":"A"},{"id":4,"sender":"B","receiver":"C"},{"id":5,"sender":"C","receiver":"A"}]
Query
db.collection.aggregate([{$addFields:{"users":["$sender","$receiver"]}},{$unwind:"$users"},{$sort:{"users":1}},{$group:{"_id":"$id","users":{$push:"$users"}}},{$group:{"_id":{"user1":{$arrayElemAt:["$users",0]},"user2":{$arrayElemAt:["$users",1]}},"total":{$count:{}}}},{$sort:{"_id.user1":1,"_id.user2":1}}])