Я хочу обновить несколько записей в MongoDB, передав массив массива объекта за один раз, и я использую node.js для кода на стороне сервера.
Я видел большую часть стека поток вопросов и ответов, но это не подходит для моего сценария.
MongoDB Версия: 4.2
Node.JS Версия: 12
Название коллекции: пользователи
Пример объекта: старые данные в MongooDB:
[{
_id:"5e84def87f7eb9eed40315e6",
name:"Sree",
gender:"female",
age:21
},{
_id:"5e7d989c0fb4a65a1f7b3e0c",
name:"siva",
gender:"male",
age:25
},{
_id:"5e7da2cf0fb4a65a1f7b3e0d",
name:"Yuvi",
gender:"male",
age:28
},{
_id:"5e84de501612a7c1c07810b8",
name:"Peeter",
gender:"male",
age:21
}]
Ожидаемый объект должен обновляться в MongoDB:
[{
_id:"5e84def87f7eb9eed40315e6",
name:"Sree Siva",
gender:"female",
age:26
},{
_id:"5e7d989c0fb4a65a1f7b3e0c",
name:"Siva Palaniappan",
gender:"male",
age:35
},{
_id:"5e7da2cf0fb4a65a1f7b3e0d",
name:"Yuvi Gopi",
gender:"male",
age:30
},{
_id:"5e84de501612a7c1c07810b8",
name:"Peeter Hey",
gender:"male",
age:30
}]
Образец объекта, полученного из внешнего интерфейса - через API Post Post - Я получаю объект ниже полезной нагрузки (запрос)
{
"postData":[{
_id:"5e84def87f7eb9eed40315e6",
name:"Sree Siva",
gender:"female",
age:26
},{
_id:"5e7d989c0fb4a65a1f7b3e0c",
name:"Siva Palaniappan",
gender:"male",
age:35
},{
_id:"5e7da2cf0fb4a65a1f7b3e0d",
name:"Yuvi Gopi",
gender:"male",
age:30
},{
_id:"5e84de501612a7c1c07810b8",
name:"Peeter Hey",
gender:"male",
age:30
}]
}
Образец кода:
let postObj = req.body.postData;
postObj.forEach(element => {
let payLoadObj = {
name:element.name,
gender:element.gender,
age:element.age
}
users.updateOne({ _id: element._id}, payLoadObj, (err, updtOrder) => {
if (err) {
serverErr(err, res);
return;
} else {
if (updtOrder.nModified !== 0) {
res.status(200).send({ err: null, data: 'Successfully Updated' });
}else{
res.status(200).send({ err: null, data: 'Not Updated' });
}
}
});
Примечание: На основании _id мы должны обновить все поля без использования forEach , и я попытался arrayFilter aslo .