Mongodb 将现有mongo db属性值添加到多个更新中的数字
我正在尝试更新mongodb中介于两点之间的文档:Mongodb 将现有mongo db属性值添加到多个更新中的数字,mongodb,mongoose,Mongodb,Mongoose,我正在尝试更新mongodb中介于两点之间的文档: PaginatedArticlePage .find({ article: req.params.articleId }) .bulkWrite([ { updateMany: { filter: { $and: [
PaginatedArticlePage
.find({ article: req.params.articleId })
.bulkWrite([
{
updateMany: {
filter: {
$and: [
{ page_number: { $lte: endpage } },
{ page_number: { $gte: startPage } },
{ page_number: { $ne: startPage } }
]
},
update: { $set: { $add: [ $page_number, - 1] } }
}
},
{
updateMany: {
filter: { page_number: { $eq: startPage } },
update: { $set: { page_number: endpage } }
}
}
])
当我执行此操作时,我得到一个错误:
ReferenceError:$未定义页码
我正在尝试将现有的$page\u编号
添加到-1
为什么
$page\u number
返回为未定义?这不起作用的原因有几个。当您使用$page\u number
时,它会被解释为一个变量。您需要将其用引号括起来,但由于您选择的运算符,这样做没有帮助
您使用的运算符仅用于聚合管道。它只返回加法的结果,不会执行更新
在您的情况下,使用运算符更合适。使用$inc
操作符,您的更新文档如下所示:
update: { $inc: { page_number: -1 } }
我在更新中看到一种奇怪的行为;对于第一个文档,它会像应该的那样进行细分,但是对于第二个文档,它不会减去任何内容;我是否遗漏了
$inc
的工作原理?我发现了问题所在。递增后,更新的值将捕捉到下一个过滤器;谢谢你的帮助。你的答案正是我所需要的!