几天来我一直在努力解决这个问题。由于某些未知原因,无论我尝试哪种替代方法,特定字段(“ 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
。这个问题背后的原因可能是什么?
答案 0 :(得分:1)
以这种方式构建更新语句时:
{
$inc:{"reviewCounts":1},
$set:averageQuery,
$inc:query
}
您要在JavaScript对象中复制$inc
键。 JavaScript将此类代码解释为:
{
$set:averageQuery,
$inc:query
}
如此简单地使用特定键“ wins”的最后一次使用,因此就失去了reviewCounts
部分。
您需要确保只有一个$inc
,并且您可以使用价差运算符来组合您的$inc
:
$inc:{ ...query, "reviewCounts":1 }