Amm*_*han 6 mongoose mongodb node.js express
我试图更新文档(如果存在)或插入(如果不存在)。我有一个带有$ inc,的字段(想将先前值加1)。我的代码是
var Appuser = new Appusers({
imei: req.body.imei,
$inc : {user_count:1},
install_flag : 1
});
var upsertData = Appuser.toObject();
delete upsertData._id;
Appusers.update({imei: Appuser.imei}, upsertData, {upsert: true}, function(err, data){
if(err) return console.log(err);
res.send(data);
});
Run Code Online (Sandbox Code Playgroud)
只有$ inc不起作用。在模式中我有user_count : { type:Number, default:0}
尚不存在时,您无法增加值。您可以在插入文档时将user_count$setOnInsert设置为1。这是$ setOnInsert的文档。
您的查询将如下所示:
var Appuser = new Appusers({
imei: req.body.imei,
install_flag : 1
});
Appusers
.update({
imei: Appuser.imei
}, {
$set: upsertData,
$setOnInsert: {
user_count: 1
},
$inc: {
user_count:1
}
}, {
upsert: true
}, function(err, data) {
if(err) return console.log(err);
res.send(data);
});
Run Code Online (Sandbox Code Playgroud)
我想建议这个:
Appusers.update({imei: Appuser.imei}, {$set: {imei: req.body.imei, install_flag : 1}, $inc : {user_count:1}}, {upsert: true}, function(err, data){
if(err) return console.log(err);
res.send(data);
});
Run Code Online (Sandbox Code Playgroud)
或者如果要使用对象:
var upsertData = {
$set: {imei: req.body.imei, install_flag : 1},
$inc: {user_count: 1}
};
Appusers.update({imei: Appuser.imei}, upsertData, {upsert: true}, function(err, data){
if(err) return console.log(err);
res.send(data);
});
Run Code Online (Sandbox Code Playgroud)