2015-01-08 2 views
0

으로 복잡한 스키마 업데이트 mongodb로 서브 임베드 문서를 업데이트하려하지만 작동하지 않습니다. 나는이 시도서브 임베드 문서

{ 
    "_id" : ObjectId("54ae5e63e71cef26050fca9a"), 
    "name" : "test", 
    "chapters" : [ 
     { 
      "id" : 1, 
      "quests" : [ 
       { 
        "id" : 1, 
        "name" : "quest1", 
        "percent" : 0 
       }, 
       { 
        "id" : 2, 
        "name" : "quest2", 
        "percent" : 0 
       } 
      ] 
     }, 
     { 
      "id" : 2, 
      "quests" : [ 
       { 
        "id" : 3, 
        "name" : "quest3", 
        "percent" : 0 
       }, 
       { 
        "id" : 4, 
        "name" : "quest4", 
        "percent" : 0 
       } 
      ] 
     } 
    ] 
} 

: 나는 chapter.id & 원하는

처럼

내 스키마가 보인다 (오직이 하나)이 문서의 비율을 업데이트, 주어진 quest.id

db.test.update({name:"test" , "chapters.quests.id":1 , "chapters.id":1} , {$set:{ "chapters.quests.$.percent":1} }) 

이 오류가

cannot use the part (chapters of chapters.quests.0.percent) to traverse the element ({chapters: [ { id: 1.0, quests: [ { id: 1.0, name: "quest1", percent: 0.0 }, { id: 2.0, name: "quest2", percent: 0.0 } ] }, { id: 2.0, quests: [ { id: 3.0, name: "quest3", percent: 0.0 }, { id: 4.0, name: "quest4", percent: 0.0 } ] } ]}) 

만약 내가 누군가와 나를 도울 수 있다면 도와 주겠습니까? 아마 스키마 문제일까요? 객체의 위치를 ​​알 수없이

+0

그럴 수 없습니다. [위치'$'] (http://docs.mongodb.org/manual/reference/operator/update/positional/) 운영자 설명서를주의 깊게 읽으십시오. "첫 번째"의미의 "outer"배열 요소 만 일치합니다. 중첩 된 배열에서는 작동하지 않습니다. –

답변

0

는 지금은 할 수 없습니다.

관련 문제