findOneAndUpdate导致重复问题

问题描述 投票:0回答:1

我在mongoose的findOneAndUpdate中遇到了问题。案例是我通过查找来更新文档。查询如下:

UserModel.findOneAndUpdate({
individualId: 'some id'
}, {
$push: {
supporterOf: 'some string'
}
})

'supporterOf'是UserModel的ref,其类型是'ObjectId'。

我在这里面临的问题是,“某些字符串”在文档中的“supporterOf”下被推送两次。

任何人都可以告诉我如何在文档中推送数组元素?

arrays node.js mongodb mongoose array-push
1个回答
1
投票

我最近遇到了同样的问题。但是,我设法通过其他一些逻辑(下面给出的详细信息)克服了这个问题,但无法理解为什么findOneAndUpdate在mongodb中插入重复条目的原因。

您可以通过遵循逻辑来克服此问题。

使用findOne或findById而不是findOneAndUpdate来搜索集合中的文档,然后手动更新文档并运行save()。

您可以使用此代码段了解更多信息

return new Promise(function (resolve, reject) {
    Model.findOne({
            someCondition...
        }, function (err, item) {
            if (err) {
                reject(err);
            } else {
                item.someArray.push({
                    someKeyValue...
                });
                item.save().then((result) => {
                    resolve(result)
                }).catch((err) => {
                    reject(err)
                });
            }
        }).catch((err) => {
            reject(err)
        });
   });

这不会插入重复的项目。但是,如果您了解重复背后的原因,必须更新此线程。

© www.soinside.com 2019 - 2024. All rights reserved.