Database

[{lessons:[{_id:"lesson1",title:"lesson1",contents:[{_id:"content1",title:"content1"},{_id:"content2",title:"content2"},{_id:"content3",title:"content3"}]},{_id:"lesson2",title:"lesson2",contents:[{_id:"content1",title:"content1"},{_id:"content2",title:"content2"},{_id:"content3",title:"content3"}]}]}]

Query

db.collection.update({},[{$set:{item:{$reduce:{input:"$lessons",initialValue:{},in:{$mergeObjects:["$$value",{$first:{$filter:{input:"$$this.contents",as:"content",cond:{$eq:["$$content._id","content1"]}}}}]}}},lessons:{$map:{input:"$lessons",as:"lesson",in:{$mergeObjects:["$$lesson",{contents:{$cond:[{$eq:["$$lesson._id","lesson1"]},{$filter:{input:"$$lesson.contents",cond:{$ne:["$$this._id","content1"]}}},"$$lesson.contents"]}}]}}}}},{$set:{item:"$$REMOVE",lessons:{$map:{input:"$lessons",as:"lesson",in:{$mergeObjects:["$$lesson",{contents:{$cond:[{$eq:["$$lesson._id","lesson1"]},{$reduce:{input:{$range:[0,{$add:[{$size:"$$lesson.contents"},1]}]},initialValue:[],in:{$concatArrays:["$$value",{$cond:[{$eq:["$$this",2]},["$item"],[{$arrayElemAt:["$$lesson.contents","$$this"]}]]}]}}},"$$lesson.contents"]}}]}}}}}])

Result