2013-10-24 5 views
0

에 나는이,몽고 DB 업데이트 하위 - 하위 문서가 없습니다 배열

시도

{ 
    "S" : { 
     "500209" : { 
      "total_income" : 38982, 
      "interest_income" : 1714, 
      "reported_eps" : 158.76, 
      "year" : 201303, 
      "yield": 1001, <== inserted a new attribute 
     } 
    }, 
    "_id" : "pl" 
} 

이 같은 문서,

{ 
    "S" : { 
     "500209" : { 
      "total_income" : 38982, 
      "interest_income" : 1714, 
      "reported_eps" : 158.76, 
      "year" : 201303 
     } 
    }, 
    "_id" : "pl" 
} 

이 같은이 문서를 업데이트하려고를 가지고

db.my_collection.update({_id: 'pl'},{$set: {'S.500209.yield': 1}}) 

그러나 나는 그것을 만들 수 없습니다. 그리고 스택 오버플로와 구글을 검색했지만 찾을 수 없습니다.

나는 많은 답변을 얻었지만 대부분은 하위 문서를 배열로 유지합니다.

내 문제를 해결하는 데 도움이되고 대부분의 하위 문서를 배열에 보관하는 이유를 알려주십시오.

답변

1

숫자 키를 누르면 문제가 발생할 수 있습니다. 필드 이름을 업데이트하십시오.

db.my_collection.update({_id: 'pl'},{$set: {'S.a500209.yield': 1}}) 

편집

업그레이드 몽고 버전. 그것은 2.4와 잘 작동합니다.

+0

작동하지 않음 :-) 어쨌든 고맙습니다. –

+1

정확하게 맞습니다. 문제는 번호 때문입니다. 그 숫자를 문자열로 변경하고 시도했습니다. 그것은 효과가있다. –

+1

내가 추측 하듯이 :) 그러나 문제는 숫자 필드 이름에 분명합니다. S.500209는 S가 배열이고 500209 번째 요소를 원한다는 것을 의미합니다. "500209"키에 접두어를 추가하고 "a500209"와 같은 것으로 만들 수 있습니까? 'S.a500209.yield'가 효과가 있다고 생각합니다. 필드 이름을 변경하지 않고도 솔루션을 사용할 수 있다면 누군가가 우리에게 계몽을 줄 것입니다. –