Javascript 在mongoose中是否有方法更新具有不同值的多个文档?
我觉得可能没有办法做到这一点,但以下是我想要实现的,我有一系列的产品需要更新:Javascript 在mongoose中是否有方法更新具有不同值的多个文档?,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我觉得可能没有办法做到这一点,但以下是我想要实现的,我有一系列的产品需要更新: const productsToUpdate = [ { "imgUrls": { "base": [ "https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png" ], "si
const productsToUpdate = [
{
"imgUrls": {
"base": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
],
"side": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
]
},
"_id": "5dd6173cf50c1d1a40fe7c2c",
"category": "MENS",
"name": "JavaScript is Cool",
"price": "27.50"
},
{
"imgUrls": {
"base": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
],
"side": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
]
},
"_id": "5dd6173cf50c1d1a40fe7c2c",
"category": "MENS",
"name": "Testing",
"price": "25.50"
}
]
此数据结构与当前存储在我的数据库中的产品数据相匹配。基本上,我需要按id查找当前产品,并能够更新类别、价格、imgUrls或名称或以上所有内容 我做了一些研究,知道我可以从toUpdate arr中获取所有ID,然后执行以下操作
Collection.update({ _id: { $in: arrOfIds }, {}, {multi: true}))
但我不知道如何填写查询以获得正确的类别/价格/名称等
我将非常感谢任何指导,如果您需要更多信息,请让我知道 称为“大规模更新”,或者说是这种更新中最有效的方式。由于数据库中有更多字段,您不想丢失它们,所以需要使用运算符
const productsToUpdate = [
{
"imgUrls": {
"base": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
],
"side": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
]
},
"_id": "5dd6173cf50c1d1a40fe7c2c",
"category": "MENS",
"name": "JavaScript is Cool",
"price": "27.50"
},
{
"imgUrls": {
"base": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
],
"side": [
"https://files.cdn.printful.com/files/ba1/ba13faa1332b7f18ec847cb9f4d79868_preview.png"
]
},
"_id": "5dd6173cf50c1d1a40fe7c2c",
"category": "MENS",
"name": "Testing",
"price": "25.50"
}
];
let toUupdate = product => ({
updateOne: {
"filter": { "_id": product._id },
"update": { "$set": { category: product.category, name: product.name, price: product.price } }
}
})
db.collection.bulkWrite(productsToUpdate.map(toUupdate);
console.log(updates);
“能够更新类别、价格、imgUrls或名称或以上所有内容。”-您能提供更多有关更新方式的详细信息吗?当然!基本上,我需要在products to update数组中获取产品,如果imgUrls、price、category或name的值已更改,则更新数据库中的相同值。是要关注这些特定字段还是只更新整个文档?我这么问是因为您提到的字段是您提供的唯一字段,所以替换整个文档不是更容易吗?或者还有其他你不想删除的字段吗?啊。很抱歉还有其他字段,但它们将保持不变,因此我将它们从初始问题中删除以节省空间。此外,请求中可能只更改其中一个字段,而不是所有字段。我可以通过一系列的单个请求来完成,但我希望有一个大规模更新选项。