2014-07-15 6 views
0

에 배열에서 여러 레코드를 업데이트하는 방법 : 이제내가 같은 스키마가 어떻게 MongoDB를

classID: String, 

students: [ 

    { 
     id: String, 
     name: String, 
     marks: Number, 
     status: String 
    } 
] 

을, 나는 35로 점수를 가지고 상태 "패스"모든 학생 레코드를 업데이트 할 필요가있다.

가장 좋은 방법은 무엇인지 알려주세요.

나는 시도했다 :

$set: {"students.$.marks" : 0} 

하지만 그것은 단지 첫 번째 일치하는 기록을 갱신했습니다.

그때 나는 인덱스를 할 수있는 관찰 :

$set: {"students.0.marks" : 0}, 
$set: {"students.1.marks" : 0} 

그리고 내가 모든 배열의 기록이나 조건을 만족하는 레코드를 업데이트 할 수있는 방법, 처음 두 레코드를 업데이트 할 수 있었다 ?

+0

{루프 { 레코드를 업데이트 } 에 대한 }

students.find({makers > 35 }, function(err,data)) 

는 솔직히, 스키마는 매우 비효율적 인 것 같다. 하나의 큰 배열에 모든 것을 넣었습니다. – betseyb

답변

0

먼저 기준에 따라 모든 레코드를 가져온 다음 레코드를 반복하고 루프에서 레코드를 업데이트 할 수 있습니다.