mongodb の配列のドット表記に問題があります。
ユーザーオブジェクトの「ベース」配列には、ドット表記で更新しようとしている一連のベースがあります。さらに複雑なことに、更新を関数の配列にプッシュし、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 }
「id」:baseOwner に一致するドキュメント内に bases 配列が存在することを確認しました。要素ゼロは配列に存在します (これは重要ではありませんが、既に存在しています)。
更新をコンソールに貼り付けると、次のようになります。
'$set': { 'bases.0': { *contains correct object*}}
最後に、ドット表記が含まれていない場合、更新によってドキュメントが正しく変更されるため、非同期更新システムが機能していることがわかります。
ドット表記に何か問題があると思いますが、何がわかりません。
私は明らかな間違いを犯していますか?