mongoose 如何使用数组更新MongoDB中数组中的特定元素

jgzswidk  于 2023-03-12  发布在  Go
关注(0)|答案(1)|浏览(173)

我有一个目标

customer = {
  customerName:"Rajesh",
  customerNum:"899111111111",
  products:[
    { 
      productName:"ABC",
      productPrize:"100",
      deliveyDate:"20/2/2022"
    },{ 
      productName:"def",
      productPrize:"22",
      deliveyDate:"22/2/2022"
    }
  ]
}

我有一个数组,其中我只更改了产品名称
updatedProduct = [ { productName:"cdf"},{ productName:"qqq"} ]
如何使用这个(updatedProduct)数组只更新MongoDB中customer对象的产品名称?
我尝试了use $set,但它没有按预期工作

uurity8g

uurity8g1#

你可以试试这个:

updatedProduct = [{ productName: "cdf" }, { productName: "qqq" }]
db.customer.udpateOne(
   { customerName: "Rajesh" },
   [
      {
         $set: {
            products: {
               $map: {
                  input: { $range: [0, updatedProduct.length, 1] },
                  as: "i",
                  in: {
                     $mergeObjects: [
                        { $arrayElemAt: ["$products", "$$i"] },
                        { $arrayElemAt: [updatedProduct, "$$i"] },
                     ]
                  }
               }
            }
         }
      }
   ]
)

相关问题