我有一个像下面这样的猫鼬模式:
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 加一个。
答案 0 :(得分:1)
您可以随时使用$inc
运算符,其形式为"更新"
Model.update(
{ _id: docId },
{
"$set": { "lastLoginTime": new Date() },
"$inc": { "loginTimes": 1 }
},
function(err,numaffected) {
}
)
这是一种常见的MongoDB服务方式,因为每次实际更新都会发送最少的流量。
另请参阅mongoose的.findByIdAndUpdate()
方法,因为这可能仅限于一个文档。
另一种方法是使用"预存"钩子是非常猫鼬的,但是当你真的不需要验证这种更新时,检查和修改文档对我来说似乎很麻烦。