mongodb - MongoDB - 是否可以在 MapReduce 中编写几个不同的函数?
问题描述
作为我学习的一部分,我们最近开始学习 MongoDB,所以我在这个领域还很年轻。在我们分配的一项任务中,使用了 MapReduce,但我无法正确执行。
提供以下形式的学生集合:
{
_id: ObjectId("4ffmdjd8cfd99k03"),
tz: "11111",
FirstName: "Anton",
LastName: "Gill",
Department: "Computer Science"
Year: 1
Courses: [ { name: "Linear Algebra 1", grade: 70}, {name: "OS", grade: 88}]
}
任务是编写一个 mapReduce 函数,使其返回每个部门和每年的学生姓名列表,所有学生的成绩都大于 90。正常输出示例:
[{Department: "Computer Science", Year: 1, students: ["Anton", "John"]},
{Department: "Physics", Year: 2, students: ["Dean", "David"]}]
我可以编写多个地图函数吗?也就是说,mapReduce 结构将如下所示:
db.students.mapReduce(
map1,
map2,
map3,
..
reduce,
..
我尝试创建所需的结构没有成功。这是我能做到的最好的,我仍然不确定如何编写 reduce 函数。
var map = function(){
var value = 0, n = this.Courses.length;
for(var i = 0; i < n; i++){
value += this.Courses[i].grade;
}
var avgGrade = value/n;
if(avgGrade > 90){
var key = {
tz:this.tz,
Department:this.Department,
Year:this.Year,
};
value = {students:[this.FirstName]};
}
emit(key, value);
};
var reduce = function(keysObj, valuesObj){
return 1000; //Ignore this function, I've no idea how to deal with it.
};
db.students.mapReduce(
map,
reduce,
{
out: "output",
}
)
我非常感谢任何帮助:)
解决方案
推荐阅读
- scala - 在scala中弄平一些层次结构选项
- php - 为什么我的 CSS 类没有添加到 Moodle 3.7 插件的选择字段中?
- binding - 如何绑定静态字符串?
- c# - 我应该返回一个 IEnumerable 类型还是一个列表?
- graph-databases - 如何从 Gremlin 中的特定顶点找到没有特定边的顶点?
- filereader - CSV 到用户自定义报告 (Dygraph)
- python - 深度学习中损失值很高,准确率在 50% 左右变化
- ios - 使用 Objective-C 在非 Safari 浏览器中打开 URL
- hyperledger-fabric - 作曲家网络安装指令给出错误:尝试安装业务网络时出错。错误:没有来自任何对等方的有效响应
- javascript - NodeJS不断加载资源失败:服务器响应状态为404(未找到)