Database

[{_id:ObjectId("5e3c27bf1ef77236945ef07b"),members:["admin","all"]},{_id:ObjectId("5e3c27bf1ef77236945ef071"),members:["user_637b2ed34ce3130e8532c4b9","admin"]},{_id:ObjectId("5e3c27bf1ef77236945ef072"),members:["group_637c708927f9df62ca646623","admin"]},{_id:ObjectId("5e3c27bf1ef77236945ef073"),members:["admin","group_63a70e959fm566d28skkfi5b2","user_427b2ed34ce4h50e8532c92h"]},{_id:ObjectId("5e3c27bf1ef77236945ef074"),members:["group_637c708927f9df62ca646623","all","admin"]},]

Query

db.collection.aggregate([{$addFields:{memberTypes:{$map:{input:"$members",in:{$first:{$split:["$$this","_"]}}}}}},{$addFields:{order:{$switch:{branches:[{case:{$eq:[{$size:{$setUnion:["$members",["admin","all"]]}},2]},then:1},{case:{$in:["all","$members"]},then:2},{case:{$and:[{$in:["group","$memberTypes"]},{$not:{$in:["user","$memberTypes"]}}]},then:3},{case:{$and:[{$in:["group","$memberTypes"]}]},then:4}],default:5}}}},{$sort:{order:1}},{$unset:["memberTypes","order"]}])

Result