Database

[{"_id":"123","details":[{"_id":"1","address":"Ramat Gan","cost":"50"},{"_id":"2","address":"Tel Aviv","cost":"30"}]},{"_id":"456","details":[{"_id":"4","address":"Modi'in","cost":"40"},{"_id":"7","address":"Modi'in","cost":"70"},{"_id":"5","address":"Tel Aviv","cost":"20"}]}]

Query

db.collection.aggregate([{$unwind:"$details"},{$sort:{"details.cost":1}},{$group:{_id:"$_id",top:{$push:{$cond:[{$eq:["$details.address","Tel Aviv"]},"$details","$$REMOVE"]}},bottom:{$push:{$cond:[{$ne:["$details.address","Tel Aviv"]},"$details","$$REMOVE"]}}}},{$project:{details:{$concatArrays:["$top","$bottom"]}}}])

Result