Node.js 如何更新mongoose文档中的值?

Node.js 如何更新mongoose文档中的值?,node.js,express,mongoose,Node.js,Express,Mongoose,我正在尝试修改另一个人编写的一段代码 我需要更新mongodb文档,而不是删除它 代码如下: const docs = await docsModel.find({}); for (const doc of docs) { doc.remove(); } 我需要更新而不是删除。我试过这个: const docs = await docsModel.find({}); for (const doc of docs) { doc.updateOne({field_I_want_to_u

我正在尝试修改另一个人编写的一段代码

我需要更新mongodb文档,而不是删除它

代码如下:

const docs = await docsModel.find({});

for (const doc of docs) {
  doc.remove();
}
我需要更新而不是删除。我试过这个:

const docs = await docsModel.find({});

for (const doc of docs) {
  doc.updateOne({field_I_want_to_update : "new_value"});
}
但它不起作用

有什么建议吗?

取决于具体情况

如果要更新具有相同值的多个文档,最好是:

doc.updateMany(<filter>, { $set: { field_I_want_to_update : "new_value" } });

与您的情况相比,您缺少作为第一个参数的
,第二个参数需要从
$set:{:}
开始,而不是从
{:}

开始,您可以使用mongoose
updateMany
函数,该函数包含一个过滤器和一个要更新的键和值对象。将对象包装在
$set
属性中。理论上,您可以使用for循环并使用
findbyiandupdate
,但这是一种资源占用。 大概是

wait docsModel.updateName({},{$set:{/*插入字段名*/:/*插入字段值*/}});
const docs = await docsModel.find({});

docs.forEach(function(doc) {
  await docsModel.updateOne({ _id: doc._id }, { $set: { field_I_want_to_update: "new_dynamic_value" } });
});