이는 포스터 같은 소리 MongoDB에서 Map/Reduce 자식의 자식 예제.
먼저 학생 ID 111에 속하는 모든 성적을내는지도 단계를 실행하십시오. 그런 다음 평균을 내리는 단계를 축소 단계로 실행합니다.
monogdb 코드는 다음과 유사합니다 :
var map = function() {
emit(this.Student_id, this.Mark);
}
var reduce = function(key, values) {
var result = { studentid: key, mark_sum: 0, count: 0, avg_mark: 0 };
values.forEach(function(v) {
r.mark_sum += v;
r.count += 1;
});
return r;
}
var finalize = function(key, value) {
if (value.count > 0) {
value.avg_mark = value.mark_sum/value.count;
}
return value;
}
그리고 몽고 구문의 맵리 듀스의 실행을 :
var command = db.runCommand({ mapreduce:"<your collection>",
map: map,
reduce: reduce,
query: { Student_id: 111 },
out: { reduce: "session_stat" },
finalize: finalize
});
map_reduce의 결과는 session_stat
에 기록됩니다. 어디에서 쿼리 할 수 있습니다. 당신이 MongoDB를 2.2을 사용하는 경우 mongoose mapreduce()
시도했지만 오류가 발생했습니다 - 500 TypeError : Object #
이것은 -500 TypeError 오류입니다 : Object #
@dany MongoDB 2.0.5를 사용하고 있지만 집계 프레임 워크에 2.2 이상이 필요하기 때문입니다. 2.2로 업그레이드 할 수 있습니까? – JohnnyHK