node.js - 我可以在 MongoDB 的单个查询中更新不同的文档吗?
问题描述
我想用一个查询更新 MongoDB 中的不同文档。我现有的数据库集合如下所示:
[ { "_id":"1", "name": null, "Age": null }, { "_id":"2", "name":null, "Age":null}, { "_id":"3", "name":null, "Age": null } ]
我有以下 JSON:
[ { "_id":"1", "name":"Arav", "Age":"25" }, { "_id":"2", "name":"Mohan", "Age":"64" }, { "_id":"3", "name":"Nishant", "Age":"23" } ]
我想知道是否可以通过单个查询使用来自上述 JSON 的相应数据更新所有现有的 3 个文档。就像是:
db.products.insert( [ { "_id":"1", "name":"Arav", "Age":"25" }, { "_id":"2", "name":"Mohan", "Age":"64" }, { "_id":"3", "name":"Nishant", "Age":"23" } ] )
问题是它返回重复错误并且如果已经存在则不更新文档。
解决方案
您可以使用bulkWrite
操作
假设你有这个 JSON 需要更新
const array = [
{
"_id": "1",
"name": "Arav",
"Age": "25"
},
{
"_id": "2",
"name": "Mohan",
"Age": "64"
},
{
"_id": "3",
"name": "Nishant",
"Age": "23"
}
]
现在 bulkWrite
查询
Model.bulkWrite(
array.map((data) =>
({
updateOne: {
filter: { _id: data._id },
update: { $set: { name: data.name, Age: data.age } }
}
})
)
})
推荐阅读
- c++ - 使用库时如何修复“错误 C1083:无法打开包含文件:'simpleclass.h':没有这样的文件或目录”?
- c - 在 Linux 中通过 prctl() 更改可执行文件名
- android - ConstraintLayout 的 setDesignInformation 方法的用途
- python - 合适的元启发式优化方法来解决问题
- python - format() 函数在 jupyter 中生成科学数字
- sql - 如何从 BigQuery JavaScript UDF 为字符串化几何集合中的每个要素创建几何?
- python - 训练 CNN 的结果看似不错,但测试时效果不佳
- spring-data-r2dbc - R2DBC 映射以在数据库中的表之间建立关系
- python - 如何选择两个日期之间的数据,并将日期作为变量
- javascript - Vue 将隐藏的输入传递给 axios