Hi @Daniyal_Khan ,
If I understand correctly you are looking into passing just Delta of an array and updating just that data.
This can be achieved with arrayFilter updates, where you can conditionally update certain array elements in a document:
For example you can pass on the updated section ids and the respectful status and in the update commands run multiple updates in $set:
update({_id : ... },{$set : { "history.$[section1].status" : 1, "history.$[section2]. completedDate" : new Date()} , { arrayFilters: [ { "section1": sectionID1, "section2": sectionID2} } ] })
Now obviously the above is an untested psedocode but the idea is similar for pulls and pashes to an array.
Having said that, many concurrent operations on arrays is not a very healthy thing so I would still test it against building the history array on client side and updating it as a whole
Thanks
Pavel