2016-07-26 2 views
0

나는 Meteor과 Mongo를 가르치려고한다. 나는 내 견과류를 몰고있는 나의 유성법 안에 특별한 삽입을 가지고있다.Meteor/Mongo, 배열 안에있는 객체 내부의 배열 안으로 밀어 넣는다

내 문서 객체는 다음과 같습니다

{ 
    _id 
    name: "name", 
    stuff: {}, 
    array: [ 
     { 
      id: 0, 
      target:[ 
       { 
        id: 0, 
        name: "1" 
       },{ 
        id: 1, 
        name: "2" 
       } 
      ] 
     },{ 
      id: 1, 
      target:[ 
       { 
        id: 0, 
        name: "A" 
       },{ 
        id: 1, 
        name: "B" 
       } 
      ] 
     } 
    ], 
} 

내가 배열 배열 내의 객체 안에 대상 배열로 객체를 추가하려합니다.

스택 오버플로에서 본 몇 가지 사항을 토대로 며칠 동안 여러 가지 다른 방법을 시도했습니다. 가장 최근 시도는 다음과 같습니다.

Documents.update({_id: id, 'array.id': arrayId}, {$addToSet:{'array.$.target': objectToInsert}},{upsert: false, multi: false}) 

누구든지 올바른 방향으로 나를 가리킬 수 있다면 감사하겠습니다.

답변

0

나는 이런 일을 할 수있는 몽고 쿼리를 알고이 donot 그러나 당신이 이해이 donot 경우 이제 수정 된 배열

Document.update({_id:id},{$set:{array:theArray}) 

으로 문서를 업데이트

let theArray=Document.findOne({_id:id}).array, 
arrayOfIds=_.pluck(theArray,"id"), 
index=_.indexOf(arrayOfIds,arrayId), 
theArray[index].target.push(objectTobeInserted) 

다음과 같이 수행 할 수 있습니다. pluck 및 _.indexOf를 참조 할 수 있습니다. underscorejs

+0

이것은 약간의 구문 오류를 뺀 것입니다. 고맙습니다. – Norl

+0

건배 ..................... –

0

업데이트를 수행 할 때 문제가 될 수 있습니다. 이 클라이언트에있는 경우, 여기에 참조 :

Update an subdocument contained in an array contained in a MongoDB document

솔루션은 서버에이를 이동하는 것입니다.

또한, 당신은 당신이 당신의 질문에 추가 할 수 있습니다, $ addToSet이 클라이언트 측에없는 및 변경하면 문제가 해결되지 않는 밀어 경우 $ 여기 MongoDb: Difference between $push/$addtoset

를 밀어 사이의 차이를보고 할 수 있습니다 무슨 잘못이야. _

관련 문제