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:{sort_key:{$sortArray:{input:{$concatArrays:["$fields.contract_first.position","$fields.contract_second.position"]},sortBy:1}}}},{$sort:{sort_key:1}},{/** comment this out to see the sort_keys*$unset: [* "sort_key"*]*/}])