2017-01-20 77 views
1

嵌套數組文件我有一個集合看起來像如何更新MongoDB中

{ 
"Aid":12234, 
"items":{ 
    "itemId":"SP897474", 
    "Blocks":[ 
    { 
     "blockId":"W23456", 
     "name":"B1", 
     "innerBlock":[ 
      { 
       "id":"S23490", 
       "name":"IB1", 
       "state":true 
      }, 
      { 
       "id":"S23491", 
       "name":"IB2", 
       "state":true 
      }, 
      { 
       "id":"S23492", 
       "name":"IB3", 
       "state":true 
      } 
     ], 
     "active":true 
    }, 
    { 
     "blockId":"W23457", 
     "name":"B2", 
     "innerBlock":[ 
      { 
       "id":"S23482", 
       "name":"IB1", 
       "state":true 
      }, 
      { 
       "id":"S23483", 
       "name":"IB2", 
       "state":true 
      } 
     ], 
     "active":false 
     } 
    ] 
}, 
"active":true 
} 

我無法更新字段是innerBlock陣列,特別是姓名,身份,因爲嵌套。基本上,我想更新上述領域.Iam已經嘗試此查詢

User.update({ 
    "items.Blocks.innerBlock.id": req.body.id, 
    "Aid": req.body.Aid 
}, { 
    "$set": { 
    "items.Blocks.$.InnerBlock.$.name": req.body.name 
    } 
}) 

它顯示了以下

"errmsg": "Too many positional (i.e. '$') elements found in path 'items.Blocks.$.InnerBlock.$.name'" 

給我不知道如何解決it.What可以在查詢時出現錯誤蒙戈殼?謝謝。

+0

您是否嘗試過items.Blocks.InnerBlock.name有被打開的功能要求 –

+0

是的,我試了一下。它這樣表示'「ERRMSG」的錯誤:「不能使用部分(innerBlock的「items.Blocks.innerBlock.name)來遍歷元素' –

+0

檢查這個答案,我認爲它可以幫助[更新與貓鼬nester數組](http://stackoverflow.com/questions/23577123/update -nested-array-with-mongoose-mongodb) – JavaEvgen

回答