2

私はこのMongoDbスキーマを持っています:

tags:{
"image_uid":"",
"faces": [
    {
        "image_uid":"",
        "age_real":""
    }
]}

辞書で更新する魔女

feedbacks = [{
                 'face_uid': '02d42dee-3b66-11e2-b12e-e0cb4e12150c',
                 'age': 23
             },
             {
                 'face_uid': '02d42dee-3b66-11e2-b12e-e0cb4e12150d',
                 'age': 23
             }]

この上:

 for feedback in feedbacks:
    tags.update(
        {'image_uid': image_uid, 'faces.face_uid': feedback['face_uid']},
        {"$set": {'faces.$.age_real': feedback['age']}}, w=1
    )

for ループの代わりにもっと効率的な方法はありますか?

4

1 に答える 1

1

現在、MongoDB は複数の配列要素を一度に更新することをサポートしていません。ただし、いくつかの更新を順番に実行する代わりに、Update if Currentパターンまたは同様のパターンを使用して、ドキュメントをローカルで更新してから DB で置き換えることを選択できます。

また、コメントでいくつかの回避策を見つけることができる元のjiraを確認してください。

于 2012-12-04T07:06:54.467 に答える