Database

[{_id:0,name:"lucas",properties:[{Name:"powers",Values:["fireball","icebeam","thunderbolt"]},{Name:"weakness",Values:["poison","rain"]}]},{_id:1,name:"cage",properties:[{Name:"powers",Values:["flight","strength","fireball"]},{Name:"weakness",Values:["lightning","ice"]}]},{_id:2,name:"joe",properties:[{Name:"powers",Values:["immortality","strength","flight"]}]},{_id:3,name:"bob",properties:[{Name:"weakness",Values:["cold","flu","no food"]}]}]

Query

db.collection.aggregate([{$set:{properties:{$map:{input:"$properties",in:{$mergeObjects:["$$this",{Values:{$sortArray:{input:"$$this.Values",sortBy:1}}}]}}}}},{$set:{powers:{$getField:{field:"Values",input:{$first:{$filter:{input:"$properties",cond:{$eq:["$$this.Name","powers"]}}}}}}}},{$set:{powersLength:{$size:{$ifNull:["$powers",[]]}}}},{$sort:{powersLength:-1,powers:1}},{$unset:["powers","powersLength"]}])

Result