Mongodb 将现有mongo db属性值添加到多个更新中的数字

Mongodb 将现有mongo db属性值添加到多个更新中的数字,mongodb,mongoose,Mongodb,Mongoose,我正在尝试更新mongodb中介于两点之间的文档: PaginatedArticlePage .find({ article: req.params.articleId }) .bulkWrite([ { updateMany: { filter: { $and: [

我正在尝试更新mongodb中介于两点之间的文档:

 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
的工作原理?我发现了问题所在。递增后,更新的值将捕捉到下一个过滤器;谢谢你的帮助。你的答案正是我所需要的!