0

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*}}

最後に、ドット表記が含まれていない場合、更新によってドキュメントが正しく変更されるため、非同期更新システムが機能していることがわかります。

ドット表記に何か問題があると思いますが、何がわかりません。

私は明らかな間違いを犯していますか?

4

1 に答える 1