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":null},{"_id":5,"treasuries":null,"tokens":null}]

Query

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

Result