2013-03-27 81 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