Database

[{_id:"id1",provider_id:"provider1",service_code:"code1",price:20},{_id:"id2",provider_id:"provider1",service_code:"code2",price:20},{_id:"id3",provider_id:"provider1",service_code:"code3",price:20},{_id:"id4",provider_id:"provider2",service_code:"code1",price:10},{_id:"id5",provider_id:"provider2",service_code:"code2",price:20},{_id:"id6",provider_id:"provider3",service_code:"code1",price:20}]

Query

db.collection.aggregate([{$match:{service_code:{$in:["code1","code2"]}}},{"$group":{"_id":"$provider_id","service_codes":{"$addToSet":"$service_code"},"total_price":{"$sum":"$price"}}},{$match:{$expr:{$eq:[{"$setIntersection":["$service_codes",["code1","code2"]]},["code1","code2"]]}}},{$project:{service_codes:false}},{$sort:{total_price:-1}}])

Result