Node.js 如何更新mongoose文档中的值?
我正在尝试修改另一个人编写的一段代码 我需要更新mongodb文档,而不是删除它 代码如下: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
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:{:}
开始,而不是从{:}
开始,您可以使用mongooseupdateMany
函数,该函数包含一个过滤器和一个要更新的键和值对象。将对象包装在$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" } });
});