猫鼬:值不会通过$ inc递增

时间:2020-07-06 07:40:51

标签: javascript mongodb mongoose mongodb-query

几天来我一直在努力解决这个问题。由于某些未知原因,无论我尝试哪种替代方法,特定字段(“ reviewCounts”)都不会增加。

这是我的模式

let itemSchema = new mongoose.Schema({
        rank: Number,
        image: String,
        name: String,
        title: String,
        count: Number,
        category: String,
        ratings: Object,
        reviewCounts: Number,
        reviews: Array,
        tags: Object,
    })

这是更新方法:

Item.findOneAndUpdate({name: item,title:title}, {
     $inc:{"reviewCounts":1},
     $set:averageQuery,
     $inc:query
     },{strict:false},
     function (err, data) {
     }
}

$inc可以在“查询”中完全找到,而不是不增加“ reviewCounts”。我尝试使用$set来手动设置值,但是那也不起作用。我仔细检查并确认该字段符合预期,int32。这个问题背后的原因可能是什么?

1 个答案:

答案 0 :(得分:1)

以这种方式构建更新语句时:

{
    $inc:{"reviewCounts":1},
    $set:averageQuery,
    $inc:query
}

您要在JavaScript对象中复制$inc键。 JavaScript将此类代码解释为:

{
    $set:averageQuery,
    $inc:query
}

如此简单地使用特定键“ wins”的最后一次使用,因此就失去了reviewCounts部分。

您需要确保只有一个$inc,并且您可以使用价差运算符来组合您的$inc

$inc:{ ...query, "reviewCounts":1 }