MongoDB 2.4 MapReduce重构

时间:2013-03-27 13:18:20

标签: javascript mongodb

我最近升级到MongoDB 2.4并且在发行说明中引用,我遇到了使用db的map函数的问题。发行说明建议重构,但我不清楚我需要采取什么样的路线。

现在该功能的非工作部分如下:

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

我不清楚如何在不推荐使用db的情况下将文档从'student'集合传递给'student'变量。

有什么建议吗?

1 个答案:

答案 0 :(得分: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 } } );

但至于重构的大小 - 它取决于原始地图缩减功能的作用。

您可能希望整理新集合中所需的所有数据,然后将地图缩小而不是。