我只想通过一个查询来更新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" } ] )
问题在于它返回重复的错误,并且如果已经存在,则不会更新文档。
答案 0 :(得分:2)
您可以使用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 } }
}
})
)
})
答案 1 :(得分:0)
使用 insertMany 而不是如下所示的 insert ,可以通过一个查询插入3个或更多文档。
db.products.insertMany([{“” _id“:” 1“,” name“:” Arav“,” Age“:” 25“},{” _id“:” 2“,” name“:” Mohan“,” Age“:” 64“},{” _id“:” 3“,” name“:” Nishant“,” Age“:” 23“}]])。
insertMany 返回包含以下内容的文档:
-如果操作在运行时具有写关注点,则布尔值被确认为true;在禁用写关注点时,则返回false。
-每个成功插入的文档ID的_id数组