Database

[{"title":"Title 34","subDoc":{"subtitle":"subtitle 8","order":8}},{"title":"Title 34","subDoc":{"subtitle":"subtitle 6","order":6}},{"title":"Title 34","subDoc":{"subtitle":"subtitle 11","order":11}},{"title":"Title 34","subDoc":{"subtitle":"subtitle 13","order":13}},{"title":"Title 34","subDoc":{"subtitle":"subtitle 7","order":7}}]

Query

db.collection.aggregate([{"$sort":{"subDoc.order":1}},{$project:{"title":1,"order":"$subDoc.order","subtitle":"$subDoc.subtitle"}},{$group:{_id:null,data:{$push:"$$ROOT"},count:{"$sum":1}}},{$addFields:{"previousDoc":{$subtract:[{$indexOfArray:["$data.order",11]},1]},"nextDoc":{$add:[{$indexOfArray:["$data.order",11]},1]},currentDoc:{$indexOfArray:["$data.order",11]}}},{"$addFields":{"next":{$arrayElemAt:["$data","$nextDoc"]},previous:{$arrayElemAt:["$data","$previousDoc"]},current:{$arrayElemAt:["$data","$currentDoc"]}}},{$unwind:"$data"},{$group:{_id:"$data.title",p:{"$addToSet":{$cond:[{$and:[{$lt:["$currentDoc",1]},]},"$$REMOVE","$previous"]}},c:{"$addToSet":{$cond:[{$and:[{$lt:["$currentDoc",0]},{$ne:["$count",1]}]},"$$REMOVE","$current"]}},n:{"$addToSet":{$cond:[{$lt:["$nextDoc",1]},"$$REMOVE","$next"]}},}},{$project:{subDoc:{"$concatArrays":["$p","$c","$n"]}}},{$project:{"subDoc.subtitle":1,"subDoc.order":1}}])

Result