Database

[{"toystore":22,"toystore_name":"Toystore A","toys":[{"toy":"buzz","code":17001,"price":500},{"toy":"woddy","code":17002,"price":1000},{"toy":"pope","code":17003,"price":300}]},{"toystore":11,"toystore_name":"Toystore B","toys":[{"toy":"jessie","code":17005,"price":500},{"toy":"rex","code":17006,"price":2000}]}]

Query

db.collection.aggregate([{$unwind:"$toys"},{$addFields:{"filters":[{"code":17001,"quantify":2},{"code":17003,"quantify":4},{"code":17005,"quantify":5},{"code":17005,"quantify":6}]}},{$match:{$expr:{$in:["$toys.code","$filters.code"]}}},{$group:{_id:"$toystore_name",total_coincidences:{$addToSet:"$toys.code"},toy_array:{$push:{"price_original":"$toys.price","toy":"$toys.toy","total":{$size:{$filter:{input:"$filters",cond:{$eq:["$$this.code","$toys.code"]}}}},price_total:{$sum:{$map:{input:{$filter:{input:"$filters",cond:{$eq:["$$this.code","$toys.code"]}}},in:{$multiply:["$toys.price","$$this.quantify"]}}}}}}}},{$addFields:{total_coincidences:{$size:"$total_coincidences"}}},{$sort:{_id:1}}])

Result