Database

[{"fields":{"contract_first":[],"contract_second":[{"position":"Bob"}]},"_id":1},{"fields":{"contract_first":[{"position":"Anna"}],"contract_second":[]},"_id":2},{"fields":{"contract_first":[{"position":"Bob"}],"contract_second":[]},"_id":3},{"fields":{"contract_first":[{"position":"Ellen"}],"contract_second":[{"position":"Dave"}]},"_id":4},{"fields":{"contract_first":[{"position":"Ellen"}],"contract_second":[{"position":"Charlie"}]},"_id":5},{"fields":{"contract_first":[],"contract_second":[{"position":"Charlie"}]},"_id":6},{"fields":{"contract_first":[],"contract_second":[{"position":"Dave"}]},"_id":7},{"fields":{"contract_first":[{"position":"Dave"}],"contract_second":[{"position":"Charlie"}]},"_id":8},{"fields":{"contract_first":[{"position":"Dave"}],"contract_second":[{"position":"Ellen"}]},"_id":9}]

Query

db.collection.aggregate([{$set:{firstKey:{"$ifNull":[{"$first":"$fields.contract_first.position"},{"$maxKey":1}]},secondKey:{"$ifNull":[{"$first":"$fields.contract_second.position"},{"$maxKey":1}]}}},{"$set":{"sortKey":{"key1":{"$min":["$firstKey","$secondKey"]},"key2":{"$max":["$firstKey","$secondKey"]}}}},{"$sort":{"sortKey":1}},{"$unset":["firstKey","secondKey","sortKey"]}])

Result