logging中的对象的_id在更新同一对象的数据时发生更改

我有一个对象的数组。 每个对象保存活动types。 我需要更新数组的一个对象。 我使用_id来更新或删除对象。 所以,当我传递id来更新数据时,我实际上是在数组中find该对象的索引,并用新数据replace该索引上的数据。

这里的问题是,我的_id也发生了变化,因为我没有使用$ set或不使用查询直接更新。 我正在使用map函数更改数据,并将其保存到mongoDB游标中,稍后在某处更新。

以下是代码和代码的输出。

organization.activityTypes = organization.activityTypes || []; let findInd = organization.activityTypes.findIndex(x => x._id.toString() == (activityType.id?activityType.id.toString() : '')); if(activityType.isDelete == true ) { if(findInd > -1) organization.activityTypes.splice(findInd,1); } else if(findInd > -1) { organization.activityTypes[findInd] ={ _id : activityType._id, teams : activityType.teams == [] ? allTeams : activityType.teams , name: toTitleCase(activityType.name), isDelete: activityType.isDelete, custom : activityType.custom } } else { organization.activityTypes.push({ teams: activityType.teams == [] ? allTeams : activityType.teams, name: toTitleCase(activityType.name), isDelete: activityType.isDelete, custom: activityType.custom }) } }) 

上面代码的输出如下所示。 这是输出的图像。

所以,我改变了活动types的名称。 最初它的ID是5a15438482900b2aa6dc7ab1然后它转换成5a15498cb024a02b4628e33f我怎样才能防止每次更新数据库中_id的这种变化?

我发现,如果我改变整个对象在一个特定的索引位置,该索引对象的_id也将被改变,但如果我只改变该对象的字段,对象数据将被更新,而不是_id。 我更新的代码写在下面。

 args.activityTypes.map((activityType)=> { let findInd = organization.activityTypes.findIndex(x =>(x._id.toString() == (activityType.id?activityType.id.toString() : ''))); if(activityType.isDelete == true ) { if(findInd > -1) organization.activityTypes.splice(findInd,1); } else if(findInd > -1) { organization.activityTypes[findInd].teams = activityType.teams == [] ? allTeams: activityType.teams; organization.activityTypes[findInd].name = toTitleCase(activityType.name); organization.activityTypes[findInd].isDelete = Object.prototype.hasOwnProperty.call(activityType,'isDelete') ? activityType.isDelete :organization.activityTypes[findInd].isDelete; organization.activityTypes[findInd].custom = Object.prototype.hasOwnProperty.call(activityType,'custom') ? activityType.custom :organization.activityTypes[findInd].custom; } else { organization.activityTypes.push({ teams: activityType.teams == [] ? allTeams : activityType.teams, name: toTitleCase(activityType.name), isDelete: activityType.isDelete, custom: activityType.custom }) } })