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的值已更改,则更新数据库中的相同值。是要关注这些特定字段还是只更新整个文档?我这么问是因为您提到的字段是您提供的唯一字段,所以替换整个文档不是更容易吗?或者还有其他你不想删除的字段吗?啊。很抱歉还有其他字段,但它们将保持不变,因此我将它们从初始问题中删除以节省空间。此外,请求中可能只更改其中一个字段,而不是所有字段。我可以通过一系列的单个请求来完成,但我希望有一个大规模更新选项。