Как лучше всего обновить одно поле для всех документов в базе данных mongodb?
Допустим, это мой массив объектов
const data = [
{
_id: '21381ubdjhbajhda',
name: 'Samuel'
},
{
_id: '21381ubdj2222bajhda',
name: 'Jack'
},
{
_id: '21384441ubdjhbajhda',
name: 'David'
},
and 45000 items more
]
, поэтому самый простой способbe
async function updateAll () {
const data = [
{
_id: '21381ubdjhbajhda',
name: 'Samuel'
},
{
_id: '21381ubdj2222bajhda',
name: 'Jack'
},
{
_id: '21384441ubdjhbajhda',
name: 'David'
},
and 45000 items more
]
await Promise.all(data.map(async (element) => {
const {_id, name} = element;
findByIdAndUpdate(_id, { $set: { name: name } }, function(err,data) {
if (err) return handleError(err);
});
}));
}
И другой метод будет использовать массовую операцию, которая будет выглядеть так, как показано ниже , но она не работает :
function updateAll () {
var bulk = db.persons.initializeOrderedBulkOp();
data.map((element) => {
const {_id, name} = element;
bulk.find( { _id: _id } ).update( { $set: { name: name } } );
})
bulk.execute();
}
Но есть ли другой лучшийспособы сделать это?Любые предложения о том, как обновить документы оптом?Пожалуйста, имейте в виду, что поле, которое я пытаюсь обновить, варьируется от документа к документу.Спасибо