2012-02-22 8 views
24

아래 그림과 같이 authors 배열의 하위 문서를 대상으로 업데이트하려면 어떻게해야합니까?mongodb에서 하위 문서를 업데이트 하시겠습니까?

collection.update({'_id': "4f44af6a024342300e000001"}, {$set: { 'authors.?' }}) 

문서 :

{ 
    _id:  "4f44af6a024342300e000001", 
    title: "A book", 
    created: "2012-02-22T14:12:51.305Z" 
    authors: [{"_id":"4f44af6a024342300e000002"}] 
} 

답변

37

같이 포함 된 문서의 실제 위치를 지정하여 :

// update _id field of first author  
collection.update({'_id': "4f44af6a024342300e000001"}, 
        {$set: { 'authors.0._id': "1" }}) 

또는 positional operator를 통해 :

// update _id field of first matched by _id author  
collection.update({'_id': "4f44af6a024342300e000001", 
        //you should specify query for embedded document 
        'authors._id' : "4f44af6a024342300e000002" }, 
    // you can update only one nested document matched by query     
        {$set: { 'authors.$._id': "1" }}) 
+2

모든 업데이트하는 방법이 중첩 된 문서 문서? – BlaShadow

+0

컬렉션에서 첫 번째로 일치하는 문서 이상을 업데이트하려는 경우 collection.update – dev

+0

에 대한 세 번째 매개 변수로 {multi : true}를 추가하십시오. 종료하지 않으면 새 하위 문서가 삽입됩니다. ? – Pila

관련 문제