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:1,startIndexes:{$slice:["$slicingIndex",{$subtract:[{$size:"$slicingIndex"},1]}]},endIndexes:{$slice:["$slicingIndex",{$subtract:[1,{$size:"$slicingIndex"}]}]}}},{$project:{array:1,sliceIdxPairs:{$zip:{inputs:["$startIndexes","$endIndexes"]}}}},{$project:{array:1,sliceParams:{$map:{input:"$sliceIdxPairs",as:"ip",in:[{$first:"$$ip"},{$subtract:[{$last:"$$ip"},{$first:"$$ip"}]}]}}}},{$project:{array:{$map:{input:"$sliceParams",as:"pair",in:{$slice:["$array",{$first:"$$pair"},{$last:"$$pair"}]}}}}}])

Result