node.js - Mongoose 更新 : $inc is not working in ups

我正在尝试更新文档(如果存在)或插入(如果不存在)。我有一个带有 $inc 的字段,(希望将先前的值加一)。 我的代码是

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);
});

只有 $inc 不起作用。在架构中我有 user_count : { type:Number, default:0}

最佳答案

当值不存在时,你不能增加它(还)。您可以在插入文档时使用 $setOnInsertuser_count 设置为 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);
    });

关于node.js - Mongoose 更新 : $inc is not working in upsert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32197885/

相关文章:

mongodb - Meteor.Collection 和 Meteor.Collection.Cu

node.js - 我可以使用 MongoDb 驱动程序从 node.js 调用 rs.initia

mongodb - Mongotemplate - 根据大于(gt)或小于(lt)运算符查询Obje

mongodb - 使用聚合框架按子文档字段分组

c# - 从 2.0 MongoDb c# 驱动程序获取结果

java - Mongodb选择所有字段按一个字段分组并按另一个字段排序

c# - 如何使用 c# 驱动程序删除 mongodb 文档中的嵌套数组元素

ruby-on-rails - Mongoid 批量更新/Upsert 替代方案?

node.js - Mongoose - findByIdAndUpdate - 不适用于 req.

java - 在最新的 MongoDB java 驱动程序中使用 createIndex() 时,索