Mongodb 是否将猫鼬中的价格更新为一半(价格/2)?

Mongodb 是否将猫鼬中的价格更新为一半(价格/2)?,mongodb,mongoose,Mongodb,Mongoose,我想使用mongoose将price字段更新为0.5*price 我尝试(并且有效)的是查找、更改和保存项目。但是有没有更有效(性能更好)的方法 请注意,我知道如何在mongodb()中执行此操作,但我不知道如何在mongoose中执行此操作。您可以用于更新文档 Products.update({}, { $mul: { price: 0.5} }, { multi: true }) 您需要对多个产品使用multi 如果你想用这个或者 或者使用您的promise resolve语法谢谢,如果我

我想使用mongoose将
price
字段更新为
0.5*price

我尝试(并且有效)的是查找、更改和保存项目。但是有没有更有效(性能更好)的方法

请注意,我知道如何在mongodb()中执行此操作,但我不知道如何在mongoose中执行此操作。

您可以用于更新文档

Products.update({}, { $mul: { price: 0.5} }, { multi: true })
您需要对多个产品使用
multi

如果你想用这个或者


或者使用您的promise resolve语法

谢谢,如果我想使用类似于:
price=price-discount
(我的意思是,减去或添加另一列值?{$set:{price:product.price*0.5}}这行代码可以执行您想执行的任何arthmetic操作。这不是跟我在文章中提到的solustion一样慢吗(因为它运行多个查询)?您和这个解决方案的性能几乎相同。而且它是标准代码。多个查询和文档没有问题。谢谢。我使用mysql多年了,但对nosql来说还是新手(比如mongo)考虑到我们有2K产品,在MySQL中这样的查询被认为是“代码>可怕的< /代码>。你有没有理由说<代码>多个查询< /代码>没有问题?在MunGo中运行2K查询不是很糟糕吗?
Products.update({}, { $mul: { price: 0.5} }, { multi: true })
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)