猫鼬场如何自动增量

时间:2014-06-17 07:14:48

标签: node.js mongodb mongoose

我有一个像下面这样的猫鼬模式:

 var userSchema = new Shema({
   userName: {type: String, default: "ABC"},
   lastLoginTime: {type: Date, default: Date.now},
   loginTimes: {type: Number, default: 1},
   ......
 });

我想更新 lastLoginTime ,并在每次用户登录时让 loginTimes 加1。 它很容易更新 lastLoginTime ,只需给它一个新的时间字符串。
但是我怎么能每次都使 loginTimes 加一个。

1 个答案:

答案 0 :(得分:1)

您可以随时使用$inc运算符,其形式为"更新"

Model.update(
    { _id: docId },
    {
       "$set": { "lastLoginTime": new Date() },
       "$inc": { "loginTimes": 1 }
    },
    function(err,numaffected) {

    }
)

这是一种常见的MongoDB服务方式,因为每次实际更新都会发送最少的流量。

另请参阅mongoose的.findByIdAndUpdate()方法,因为这可能仅限于一个文档。

另一种方法是使用"预存"钩子是非常猫鼬的,但是当你真的不需要验证这种更新时,检查和修改文档对我来说似乎很麻烦。