Database

[{"_id":1,"treasuries":[{"name":"Main","address":"0x7e9e4c","network":"1"}],"tokens":{"name":"xyz","id":123}},{"_id":2,"treasuries":[{"name":"Main 2","address":"0x7e9e4c","network":"12"}],"tokens":null},{"_id":3,"treasuries":[],"tokens":null},{"_id":4,"treasuries":null,"tokens":{"name":"xyz","id":123}},{"_id":5,"treasuries":null,"tokens":null}]

Query

db.collection.aggregate([{"$addFields":{"hasBothFields":{"$cond":{"if":{"$and":[{"$isArray":"$treasuries"},{"$gt":[{"$size":"$treasuries"},0]},{"$ne":["$tokens",null]}]},"then":1,"else":0}},"hasOnlyA":{"$cond":{"if":{"$and":[{"$isArray":"$treasuries"},{"$eq":["$tokens",null]},{"$gt":[{"$size":"$treasuries"},0]}]},"then":1,"else":0}},"hasOnlyB":{"$cond":{"if":{"$and":[{"$not":{"$isArray":"$treasuries"}},{"$ne":["$tokens",null]}]},"then":1,"else":0}}}},{"$sort":{"hasBothFields":-1,"hasOnlyA":-1,"hasOnlyB":-1}},{"$project":{"hasBothFields":0,"hasOnlyA":0,"hasOnlyB":0}}])

Result