2016-11-21 4 views
0

저는 mongoDB에서 상당히 복잡한 데이터 구조를 가지고 있습니다. 이 문서는 같은 작은 모양이다단계 임베디드 문서 업데이트

{ 
    "id" : 0, 
    "basket" : [ 
     { 
      "price" : 0.9918, 
      "id" : 2500, 
      "exGroup" : [ 
       { 
        "exgId" : 0, 
        "ePrice" : 0.9918 
       } 
       { 
        "exgId" : 1, 
        "ePrice" : 0.9918 
       } 
      ] 
     }, ]} 

포함 된 문서의 각 내가 가진이

   { 
        "id" : 0, 
        "price" : 0.9918 
        "order" : { 
          "id":0, 
          "exec": 
           [{ 
           "quantity" : 1, 
           "price" : 1.0 
           }, 
           { 
           "quantity" : 1, 
           "price" : 1.01 
           } 
           ] 
       } 

처럼 보이도록 내가 포함 된 문서의 exGroup 배열로 문서의 배열을 추가하고 싶습니다

db.fund.update(
    { 
     "id": 0, 
     "basket.id": 2500, 
     "basket.exGroup.exgId": 0, 
     "basket.exGroup.order": {"$exists" : false} 
    }, 
    { 
     "$set": 
     { 
      "basket.exGroup.$.order" : 
      { 
       "id":0, 
       "exec": 
        [{ 
        "quantity":1, 
        "price":0.9978 
        }] 
      } 
     } 
    } 
) 

불행하게도이 나에게 오류 "fundId"제공 : 0, "날짜"ISODate 다음과 같다 업데이트 쿼리와 함께이 작업을 수행하려 ("2016-11-21T11 : 00 : + 0000 00.000"), "basket.assetId"2500 "basket.exGroup.exgId": 0 기본적으로

내 문제는 내가 방법을 알고하지 않는 것이 다중 레벨 배열의 리프에있는 문서를 올바르게 주소 지정 (예 : doc.array.doc.array.doc)

+0

exgroup 그룹에 뭔가를 넣으시겠습니까? –

+0

예. 만약 누군가가 내게 그걸 올바르게하는 방법을 보여 주면 내가 나머지를 할 수 있다고 생각한다. –

답변

0
db.rich.update(
    { 
     "id": 0, 
     "basket.id": 2500, 
     "basket.exGroup.exgId": 0, 
     "basket.exGroup.order": {"$exists" : false} 
    }, 
    { 
     "$push": 
     { 
      "basket.$.exGroup" : 
      { 
       "id":0, 
       "exec": 
        [{ 
        "quantity":1, 
        "price":0.9978 
        }] 
      } 
     } 
    } 
) 

기본적으로 exGroup을 업데이트하고 새 문서를 푸시합니다. 그러나 그에 따라 문서를 모델링해야합니다.

+0

그것은 내가 문서의 삽입을 돕는 데 매우 도움이된다. 나중에 필요할 경우 가격 (가격)을 업데이트하는 방법을 아직도 이해할 수 없습니다. 그걸 도울 수 있니? –

+0

. 나는 그것을 잠시 게시 할 것이다. 지금 무언가의 한가운데서. 그래서 기본적으로 당신은 바코드 내의 procie를 일치시키고 업데이트하려고합니다. exgroup. 권리 ? –

+0

예. 당신이 당신의 코멘트를 편집 할 수 있고 그것을 보여줄 수 있다면 나는 너무 좋을 것이라고 생각합니다. 감사 –