在MongoDB中更新字典的有效方法?

时间:2012-12-01 18:29:30

标签: python performance pymongo

我有这个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循环吗?

1 个答案:

答案 0 :(得分:1)

目前,MongoDB不支持一次更新多个数组元素。但是,您可以选择使用Update if Current模式或类似的模式在本地更新文档,然后在数据库中替换它,而不是按顺序执行多个更新。

另外,请查看原始jira,您可以在评论中找到一些解决方法。