2016-11-30 56 views
0

所以,我的球員對象的集合,它看起來像:的MongoDB:更新所有文檔的某些嵌套元素(可能沒有該元素的父)

scriptData: { 
    gameState: { 
     heroRoster: { 
      hero1: { 
       abilityTrees: [{ 
        handle: 'conjuration', 
        abilities: { 
         // ... 
        } 
       }] 
      }, 
      hero2: { 
       abilityTrees: [{ 
        handle: 'movement', 
        abilities: { 
         stance_dancing: { 
          passive: true 
         } 
        } 
       }] 
      } 
     } 
    } 
} 

...和我試圖運行一個update()查詢,該查詢將爲擁有該能力樹的每個英雄設置stance_dancing.passivefalse,用於集合中的每個玩家對象。如你所見,並不是每個英雄都有'移動'能力樹。任何提示這個查詢應該是什麼樣子?

謝謝!

+0

恕我直言,你將不得不在JavaScript中做到這一點 – harishr

回答

1

我相信你把所有的英雄的英雄的:) 的集合中,你可以更新:

查找:

{ "abilityTrees.abilities.stance_dancing.passive": { $exists: true } } 

更新:

{ 
    $set: { 
     "abilityTrees.$.abilities.stance_dancing.passive" : false 
    } 
} 

此找到所有文件其中「abilityTrees.abilities.stance_dancing.passive」存在並將被動字段設置爲指定值

相關問題