我有一个如下的猫鼬模式:

 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每次加一。

最佳答案

好吧,您始终可以将$inc运算符与“ update”形式一起使用

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

    }
)


这是MongoDB通常首选的处理方式,因为每次实际更新发送的流量都很少。

另请参见.findByIdAndUpdate()猫鼬方法,因为这可能仅限于一个文档。

一种替代方法是使用“ pre save”钩子使它非常猫鼬,但是当您确实不需要诸如验证这类更新之类的东西时,检索和修改文档对我来说似乎有点麻烦。

10-08 15:51