MongoDB / Mongoose-通过执行加法更新文档中的数字

Sky*_*ker 4 javascript mongoose mongodb node.js

我有一个mongoDB集合,用于存储节省的时间和成本。当用户第一次输入数据时,文档有点像这样:

{ "fullName" : "john smith",
  "company" : "xyz",
  "email" : "john.smith@xyz.com",
  "timeSaved" : 50 //this is in minutes
  "moneySaved" : 10 //this is in dollars
}
Run Code Online (Sandbox Code Playgroud)

现在,当用户再次输入数据时,我发现该用户是否已经存在文档,如果可以,我会得到它。

这次用户输入:

  1. 节省时间55
  2. 省钱10

我想新值添加到现有值。所以在文件显示之后:

"timeSaved" : 105 // old 50 + new 55
"moneySaved" : 20 // old 10 + new 10
Run Code Online (Sandbox Code Playgroud)

什么是实现这一目标的最佳方法。mongodb / mongoose中是否有一个内置函数可以对此提供帮助。

Nae*_*ikh 5

您可以通过$ inc运算符执行此操作。在$inc操作者通过一个指定的值递增一个字段

例如,在您的情况下:

UserModel.update(
    SomeFindCriteria,
   { $inc: { timeSaved: newTimeSaved, moneySaved: newMoneySaved } }
)
Run Code Online (Sandbox Code Playgroud)