Database

db={"test":[{"name":"kamal","val":5},{"name":"ali","val":3},{"name":"mohammad","val":12},{"name":"kamal","val":6},{"name":"kamal","val":10},{"name":"ali","val":11},{"name":"mohammad","val":9},{"name":"mohammad","val":19},{"name":"ali","val":6}]}

Query

db.test.aggregate([{$group:{_id:"$name"}},{$lookup:{from:"test",let:{username:"$_id"},pipeline:[{$match:{$expr:{$eq:["$$username","$name"]}}},{$project:{_id:0,val:1}},{$limit:500000}],as:"vals"}},{$project:{vals:{$map:{input:"$vals",in:"$$this.val"}}}}])

Result