2014-09-24 3 views
0

몽고와 몽고킨을 사용하고 있습니다.하나의 몽고킨 검색어로 하나 이상의 배열을 푸시

clients: { 
    firstArray: [ 
    { 
     _id: '153'. 
     someField1: 'someVal1', 
     someField2: 'someVal2' 
    } 
    ... 
    ] 

    secondArray: [ 
    { 
     _id: '7423'. 
     someField1: 'someVal1', 
     someField2: 'someVal2', 
     firstArrayIds: ['153, 154, 155, ...'] 
    } 
    ... 
    ] 
} 

firstArray$push 객체에 어떻게 든 가능하며, 동일한 쿼리에 _idsecondArray.firstArraysIds ¨에 추가 : 나는 다음과 같은 데이터 구조를 가지고?

답변

3

누가 이것을 할 수 없다고 했습니까?

db.collection.update(
    { "_id": someDocumentId, "secondArray._id": 7423 }, 
    { 
     "$push": { 
      "firstArray": someNewObject, 
      "secondArray.$.firstArrayIds": someNewObject._id 
     } 
    } 
); 

그래서 positional $ 운영자가 수 있습니다 당신은 "secondArray를"의 요소를 업데이트 : $push는 "최고 수준의"업데이트 수정 같이 그것은 아주 간단, 등은 "문서 수준"인수 사례를 걸립니다 너의 상태와 일치했다.

당신이 하지 수있는 유일한 방법은 문서에 이상의 배열 요소의 요소를 일치 업데이트 할 사람들 "위치"를 요청합니다. 설명서에 나와 있듯이 첫 번째 일치 색인 만 위치 연산자에 저장됩니다.

하지만 한 번만 실행하면됩니다.

+0

감사합니다. 나는 이것을 즉시 알기를 기대 했었습니다.) # –

+0

@ AndersÖstman 올해 저는 stackoverflow에 올 해 대부분의 이유가 있었고, 일반적으로 일반적인 작업이나 이전에는 제공되지 않았던 복잡한 문제에 대한 합리적인 설명을 제공했습니다. 심지어 여러 가지 문서 패치를 제출했지만 잘 받아 들여졌지만 인턴 사원을 고용하여 더 명확한 사례를 담은 문서를 다시 읽으려는 움직임이있었습니다. Meh. 나는 정말로 더 블로그를해야한다고 생각한다. –

+0

나는이 문제에 어떻게 든 피해야한다고 생각했습니다. 이 질문을 참조하십시오 : http://stackoverflow.com/questions/26165650/mongodb-pull-syntax. 정말 감사드립니다. –

관련 문제