Database

[{"vname":"x","pname":"xy","price":"10000"},{"vname":"x","pname":"xy","price":"10000"},{"vname":"x","pname":"xy","price":"10000"},{"vname":"x","pname":"xy","price":"10000"},{"vname":"x","pname":"xy","price":"10000"},{"vname":"z","pname":"xy","price":"10000"}]

Query

db.collection.aggregate([{$match:{pname:"xy"}},{$group:{_id:"$vname",items:{$topN:{output:{pname:"$pname",price:"$price"},sortBy:{price:1},n:4}}}}])

Result