我在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可以正确更改文档。
我假设点符号有问题,但我看不到。
我犯了任何明显的错误吗?
评论中的简短讨论产生了一个简单的答案:
结果中的n: 0
表示没有文档与更新查询匹配。罪魁祸首是id
变量中包含的baseOwner
值不正确。