2012-12-01 61 views
2

我有這樣的MongoDB架構:在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

目前MongoDB不支持一次更新多個數組元素。但是,您可以選擇使用Update if Current模式或類似的方式在本地更新文檔,然後將其替換到數據庫中,而不是按順序執行多個更新。

此外,請檢查原始jira,在這裏您可以在評論中找到幾個解決方法。