Database
db={"properties":[{"_id":1,"city":"paris","tags":[{"_id":1,/** seen*/"count":43},{"_id":2,/** liked*/"count":32}]},{"_id":2,"city":"leon","tags":[{"_id":1,/** seen*/"count":17}]},{"_id":3,"city":"leon","tags":[{"_id":1,"count":10},{"_id":3,"count":10}]}],"tags":[{"_id":1,"name":"seen"},{"_id":2,"name":"liked"},{"_id":3,"name":"saved"}]}
Query
db.properties.aggregate([{$match:{"tags._id":{$in:[1,2]}}},{$set:{tags:{/**filters array 'tags' to the list of tags 1, 2*/$filter:{input:"$tags",cond:{$in:["$$this._id",[1,2]]}}}}},{"$unwind":"$tags"},{$sort:{"tags.count":-1}},{"$group":{"_id":"$_id","city":{"$first":"$city"},tags:{$push:"$tags"}}}])