'What happens behind the scene when you update a nested array element in a MongoDB Document

When I do a nested object update inside an array in a Document. Does Mongo DB Engine needs to fetch and parse the whole document update the field and reinsert the document ?

db.ControllerPointCollection.updateOne({
    "_id": "Ashutosh Das_MigrationTest_0_1_0"
}, {
    $set: {
        "Tables.$[t].Blocks.$[b].Points.$[p].Description": "Hey You"
    }
}, {
    arrayFilters: [{
        "t.ID": 32
    }, {
        "b.ID": 268
    }, {
        "p.PointDefinitionID": 280
    }]
})
    


Solution 1:[1]

Behind the scene, mongodb has a class called Model and inside Model class compose other behaviours with initializing other classes and one of them, I call it Sync which is implemented like this. this is not exact code, but you get the idea:

interface HasId {
  id?: number; //optional 
}
export class ApiSync<T extends HasId> {
  constructor(public rootUrl: string) {}
  //   if user has Id, that means it is already stored in db, so we make a put request, if it does not then we make post
  // so in mongoose, saving means Http request to db
  save(data: T): AxiosPromise {
    const { id } = data;
    if (id) {
      return axios.put(this.rootUrl + id, data);
    } else {
      return axios.post(this.rootUrl, data);
    }
  }
  fetch(id: number): AxiosPromise {
    return axios.get(this.rootUrl + id);
  }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Yilmaz