2013-03-27 59 views
2

我最近升級到了MongoDB 2.4,並且在發行說明中提到,我在使用db的map函數時遇到了問題。發行說明建議重構,但我不清楚我需要採取什麼路線。MongoDB 2.4 MapReduce重構

此刻的非工作部件的功能如下:

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 } }); 

但至於如何做大一個重構 - 這取決於什麼原始地圖降低功能一樣。

您可能希望將所需的所有數據整理到一個新集合中,然後運行map reduce。

+0

感謝羅斯,我想我應該能夠解決功能內部缺乏查詢。出於好奇,這種改變的目的是什麼? – dphase 2013-03-27 14:29:13