减少mongodb中的值

I.K*_*.K. 2 mongodb node.js mongodb-query

我正在创建一个购物应用程序。每个用户都有钱包。结构如下:

{ 
    "userName" : "Gandalf the Grey",
    "wallet" : 100,
    "orderHistory" : []
}
Run Code Online (Sandbox Code Playgroud)

假设该用户购买了 50 件的商品。有没有更好的方法而不是用 findOne 获取其钱包值,然后进行减法并更新新的钱包值?现在,我正在通过两种不同的操作来实现它,看起来像

dbo.collection('users').findOne({'userName': controller.userName})
.then(function(doc) { 
    updateWallet(doc); 
}
Run Code Online (Sandbox Code Playgroud)

然后

let newWalletBalance = doc.wallet - product.cost;
dbo.collection('users').updateOne(
    {'userName':controller.userName},
    { $set: {wallet: newWalletBalance } }
);
Run Code Online (Sandbox Code Playgroud)

是否有可能将它们合而为一?

Ash*_*shh 5

您可以使用$inc运算符

db.collection('users').updateOne(
  { 'userName': controller.userName },
  { '$inc': { 'wallet': -product.cost } }
)
Run Code Online (Sandbox Code Playgroud)