Mongodb 点符号不更新数组
Mongodb Dot Notation Not Updating Array
我对 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
表示没有文档匹配更新查询。罪魁祸首是 baseOwner
变量中包含的不正确 id
值。
我对 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
表示没有文档匹配更新查询。罪魁祸首是 baseOwner
变量中包含的不正确 id
值。