我有一个功能,假设加起来或减少信用。但我的下面的代码只是取代了信用值。我可以做增量或减量的猫鼬有什么捷径吗?否则我将得到该值然后将其插回,我认为不是这样做的。
function update_total_credit(total_amount, topup_value){
User.findOneAndUpdate(
{email: user_email},
{$set:{credit:total_amount}},
{new: true},
function(err, response){
if(err){
res.json(0);
}else{
res.json(response.credit);
}
});
}
答案 0 :(得分:3)
您可以将值设置为动态并将其传递给查询
function update_total_credit(total_amount, topup_value) {
//The flag value means your breakpoint where you decide which value should go in query, you can change on your requirement basis
var flag = 1;//increament by 1 every time
if (!flag)
flag = -1;//decreament by 1 every time
User.findOneAndUpdate({
email: user_email
}, {
$inc: {
credit: flag
}
},
function(err, response) {
if (err) {
res.json(0);
} else {
res.json(response.credit);
}
});
}
请参阅此处有关$inc
的参考资料答案 1 :(得分:0)
使用$inc
按照以下方式增加特定字段
更新:
db.getCollection('noti').findOneAndUpdate(
{ _id: ObjectId("5bc061f05a4c0511a9252e88") },
{
$inc: { count: 1 }
}, {new: true })
结果:
{
"_id" : ObjectId("5bc061f05a4c0511a9252e88"),
"count" : 8.0,
"color" : "green",
"icon" : "circle",
"name" : "online visitor",
"read" : false,
"date" : ISODate("2018-10-12T08:57:20.853Z"),
"__v" : 0.0,
"views" : 1.0
}
这里的计数增加1,然后增加7。