Mongodb点表示法不更新数组

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

我在mongodb的点符号数组方面遇到问题。

用户对象中的'bases'数组中有一组基数,我正尝试通过点表示法进行更新。为了进一步使事情复杂化,我将更新推送到一系列函数中,并使用Async库调用它们。

//NOTE: baseIndex, baseData, dbCollection and baseOwner are considered defined already.
let updateArray = []
let thisUpdateObject = {}
thisUpdateObject['$set'] = {}
thisUpdateObject['$set']['bases.'+baseIndex] = baseData
let thisUpdate = function(callback){
    dbCollection.update({'id':baseOwner},thisUpdateObject,function(err, result){
        if (err){
            callback(err)
        } else {
            callback(null, result);
        }
    });
}
updateArray.push(thisUpdate)
async.parallel(updateArray,function(err, results){
            if...

我的结果显示以下内容:

n: 0,
nModified: 0,
ok: 1 }

我已经验证了bases数组是否存在于与'id':baseOwner相匹配的文档中。元素零确实存在于数组中(这不重要,但它已经存在。)

将更新粘贴到控制台后,我得到了:

'$set': { 'bases.0': { *contains correct object*}}

最后,我知道异步更新系统正在工作,因为在不包含点符号的情况下,更新IS可以正确更改文档。

我假设点符号有问题,但我看不到。

我犯了任何明显的错误吗?

node.js mongodb mongodb-update
1个回答
1
投票

评论中的简短讨论产生了一个简单的答案:

结果中的n: 0表示没有文档与更新查询匹配。罪魁祸首是id变量中包含的baseOwner值不正确。

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