Database

[{slicingIndex:[0,4,7,10],array:[{name:1},{name:2},{name:3},{name:4},{name:5},{name:6},{name:7},{name:8},{name:9},{name:10}]}]

Query

db.collection.aggregate([{"$project":{array:{"$map":{"input":"$slicingIndex","as":"elem","in":{"$let":{"vars":{/**create variable that holds element one index+1 to the current index*/"elemOneStepHeadToElem":{"$arrayElemAt":["$slicingIndex",{$add:[1,{"$indexOfArray":["$slicingIndex","$$elem"]}]}]}},"in":{"$slice":["$array","$$elem",{"$subtract":["$$elemOneStepHeadToElem","$$elem"]}]}}}}}}}/**remove null from array from last index*/,{"$project":{array:{"$filter":{"input":"$array","cond":{$ne:["$$this",null]}}}}}])

Result