Database

db={myarrays:[{"field":"to be kept","references":[{"myid":"A","ancestors":[{"_id":"parent1","type":"type1"},{"_id":"parent2","type":"type1"},{"_id":"parent3","type":"type1"}]},{"myid":"B","ancestors":[{"_id":"parent4","type":"type1"},{"_id":"parent5","type":"type1"},{"_id":"parent3","type":"type1"}]},{"myid":"C","ancestors":[{"_id":"parent0","type":"type1"},{"_id":"parent1","type":"type1"},{"_id":"parent2","type":"type1"},{"_id":"parent6","type":"type2"}]}]}]}

Query

db.myarrays.aggregate([{"$match":{"references.ancestors._id":"parent2"}},{"$unwind":"$references"},{"$addFields":{"references.ancestors":{"$cond":{"if":{"$in":["parent2","$references.ancestors._id"]},"then":{"$concatArrays":[[{"_id":"parent4","type":"type1"},{"_id":"parent5","type":"type1"}],{"$slice":["$references.ancestors",{"$add":[{"$indexOfArray":["$references.ancestors._id","parent2"]},1.0]},{"$size":["$references.ancestors"]}]}]},"else":"$references.ancestors"}}}},{"$group":{"_id":"$_id","references":{"$push":"$references"}}},{"$merge":{"into":"myarrays","on":"_id","whenMatched":"merge"}}])

Result