我有一个如下的猫鼬模式:
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”钩子使它非常猫鼬,但是当您确实不需要诸如验证这类更新之类的东西时,检索和修改文档对我来说似乎有点麻烦。