繁体   English   中英

Mongodb 点符号不更新数组

[英]Mongodb Dot Notation Not Updating Array

我对 mongodb 的 arrays 的点表示法有问题。

用户 object 中的“基数”数组中有一组基数,我正在尝试通过点符号进行更新。 更复杂的是,我将更新推送到函数数组中,并使用 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*}}

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

我假设我的点符号有问题,但我看不出是什么。

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

评论中的简短讨论得出了一个简单的答案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM