2013-03-27 2 views
2

최근에 MongoDB 2.4로 업그레이드되었으며 릴리스 노트에서 참조한대로 db를 사용하는 맵 기능에 문제가 있습니다. 릴리스 노트에서는 리팩토링을 권장하지만 어떤 경로를 사용해야하는지에 대해서는 분명하지 않습니다. 다음과 같이MongoDB 2.4 MapReduce Refactor

함수의 지금이 아닌 작업 조각은 다음과 같습니다

function map() { 
    var student = db.student.findOne(this.student_id); 
    var school = db.school.findOne(this.school_id); 
    ... 
    emit({ 
    bcg_id: student.bcg_id, 
    ... 

내가 지금 데시벨은 더 이상 사용되지하는 '학생'변수에 '학생'모음에서 문서를 전달하는 방법에 대한 불분명 해요 .

어떤 권장 사항이 있습니까?

답변

1

더 이상 javascript 함수 내에서 쿼리를 실행할 수 없습니다.

참조 : http://docs.mongodb.org/manual/release-notes/2.4/#additional-limitations-for-map-reduce-and-where-operations

당신은 범위의 예에 데이터를 전달할 수 있습니다

res = t.mapReduce(mapper , reducer , { scope : { xx : 1 } }); 

을하지만 어떻게 크지 리팩토링으로 - 원래지도했던 기능을 감소에 따라 달라집니다.

필요한 모든 데이터를 새 컬렉션에 대조 한 다음지도 축소를 대신 실행할 수 있습니다.

+0

감사합니다. Ross, 나는 함수 내부의 쿼리 부족을 해결할 수 있어야한다고 생각합니다. 호기심에서이 변화의 목적은 무엇 이었습니까? – dphase

관련 문제