代码之家  ›  专栏  ›  技术社区  ›  yaya

在mongoose中将价格更新为一半(price/2)?

  •  0
  • yaya  · 技术社区  · 5 年前

    price 字段到 0.5 * price 使用猫鼬。

    我所尝试的(而且奏效的)是找到项目,更改它们并保存它们。但是有没有更有效(更好的性能)的方法呢?

    Products.find({} ,
      (err, ps) => {
        ps.forEach(p => {
          p.Price = p.Price * 0.5;
          p.save((err, res) => console.log(err, res))
        });
      }
    )
    

    请注意,我知道如何在mongodb中执行此操作( link )但我不知道在猫鼬身上怎么做。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Ashok    5 年前

    你可以用 $mul

    Products.update({}, { $mul: { price: 0.5} }, { multi: true })
    

    你需要使用 multi 适用于多种产品。

    $set link

    const products = await Products.find({})
    const promiseAll = products.map(async (product) => {
       await Products.findOneAndUpdate(
           { _id: product._id } ,
           { $set: { price: product.price * 0.5 }} 
       );
    })
    await Promise.all(promiseAll)