mongoDB updateMany通过查询参数并使用来自项的数据

xdnvmnnf  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(133)

我有一个数据库:

[{  "itemName": "ball",
   "price": 20,
   "category": "sport",
   "discountPrice": 0
},
{  "itemName": "car",
   "price": 50,
   "category": "toys",
   "discountPrice": 0
}]

我需要设置一个折扣价格,例如查询category=“sport”。我必须将商品的“价格”减去折扣,然后将值设置为“discountPrise”
例如,请求查询= {类别:“运动”},请求正文= {折扣:0.9}我这样写

const putDiscount = async (req, res) => {
await Product.updateMany(req.query, {discountPrice: ${price*req.body.discount}})
res...}

如何获得每件商品的“价格”?

db2dz4w8

db2dz4w81#

您可以使用更新管道:

db.collection.update(
  {"category": "sport"},
  [{$set: {discountPrice: {$multiply: ["$price", req.body.discount]}}}],
  {multi: true}
)

了解它在playground example上的工作原理

相关问题