Javascript Mongoose:价值不通过$inc递增
我为这个问题挣扎了好几天。出于某种未知的原因,无论我尝试何种替代方法,特定字段(“reviewCounts”)都不会递增 这是我的模式Javascript Mongoose:价值不通过$inc递增,javascript,mongodb,mongoose,mongodb-query,Javascript,Mongodb,Mongoose,Mongodb Query,我为这个问题挣扎了好几天。出于某种未知的原因,无论我尝试何种替代方法,特定字段(“reviewCounts”)都不会递增 这是我的模式 let itemSchema = new mongoose.Schema({ rank: Number, image: String, name: String, title: String, count: Number, category: String,
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
完全可以在“查询”中找到,而不是增加“查看计数”。我曾尝试使用$set
手动设置该值,但也不起作用。我仔细检查并确认该字段符合预期的int32
。这个问题背后的原因可能是什么?当您以这种方式构建更新语句时:
{
$inc:{"reviewCounts":1},
$set:averageQuery,
$inc:query
}
您正在复制JavaScript对象中的$inc
键。JavaScript将此类代码解释为:
{
$set:averageQuery,
$inc:query
}
因此,只需最后一次使用特定键“wins”,您就失去了reviewCounts
部分
您需要确保只有一个$inc
,并且可以使用spread运算符组合您的$inc
:
$inc:{ ...query, "reviewCounts":1 }
你能试着用单个的
$inc
像$inc:{…查询,“reviewCounts”:1}
?@mickl它成功了!非常感谢。我能知道你的方法有效的原因吗?mongoose不允许多个$inc吗?