2014-04-16 3 views
4

mongodb 문서의 배열에있는 각 객체에 속성을 업데이트하려고합니다 (없는 경우 추가). 예를Mongodb : 배열에있는 객체에 속성을 추가하는 방법 (객체 포함)?

내 문서 :

{ 
    "_id" : "1", 
    student : [ 
       { 
        "name" : "rajesh", 
        "rollno" : 1 
       }, 
       { 
        name" : "rajesh2", 
        "rollno" : 2 
       }, 
       { 
        name" : "rajesh3", 
        "rollno" : 3, 
        class : 6 
      } 
     ] 
    } 

내가 MongoDB가이 작업을 수행 할 수 있습니다 array.How 학생의 모든 객체에 속성을 '클래스'를 추가하고 싶습니다.

+0

'class '에는 어떤 가치가 있습니까? –

+0

클래스 값이 7이라고 가정합니다. – rajeshpanwar

답변

4

예 아니요.

db.collection.update(
    { "_id": 1 }, 
    { "$set": { 
     "student.0.class": 4, 
     "student.1.class": 5, 
     "student.2.class": 6 
    }} 
) 

그러나 실제로 알 수없는 길이 배열의 모든 값을 업데이트하기를 원한다면이 가능하지 않을 것이다 :

하면이 비교적 간단 배열에있는 항목의 인덱스를 알고 제공 단지 한 번의 업데이트로 문서를 검색하고 전체 배열을 먼저 수정해야합니다.

db.collection.find({ _id: 1}).forEach(function(doc) { 
    for (var i=0; i < doc.student.length; i++) { 
     doc.student[i] = newValue; 
    } 
    db.collection.update(
     { _id: doc._id }, 
     { "$set": { "student": doc.student } } 
    );  
}) 

또는 일부는 기본적으로이 줄을 따라 접근해야합니다.

제한 사항을 자세히 알아보고 적절히 코딩하십시오.

+0

아니요, 이것은 단지 예입니다. 학생의 물건 수는 알 수 없습니다. – rajeshpanwar

+0

@rajeshpanwar 당신이 논평하는 동안 나는 더 많은 정보를 추가하고 있었다. 옵션을 고려하여 어떤 접근 방식이 가장 적합한 지 결정하십시오. 문서를 읽고 길이를 결정하여 첫 번째 양식을 만들거나 두 번째 양식 만 만들 수 있습니다. –

관련 문제