在MongoDB中可以使用MapReduce进行一些复杂的聚合查询 Map函数和Reduce函数可以使用JavaScript来实现 可以通过db.runCommand或ma
在MongoDB中可以使用MapReduce进行一些复杂的聚合查询
Map函数和Reduce函数可以使用JavaScript来实现
可以通过db.runCommand或mapReduce命令来执行一个MapReduce的操作:
db.runCommand(
[, verbose : true]
}
);
#或者使用一个包装后的Helper命令
db.collection.mapReduce(mapfunction,reducefunction[,options]);
如果没有定义out,则它执行后默认生成一个临时的collection,当client连接断开后,该collection会自动被清除
一个简单的列子,有一个user_addr的collection,结果如下:
db.user_addr.find({'Uid':'test@sohu.com'})
{ "_id" : ObjectId("4bbde0bf600ac3c3cc7245e3"), "Uid" : "yangsong@sohu.com", "Al" : [
{
"Nn" : "test-1",
"Em" : "test-1@sohu.com",
},
{
"Nn" : "test-2",
"Em" : "test-2@sohu.com",
},
{
"Nn" : "test-3",
"Em" : "test-3@sohu.com",
}
] }
存储了一个用户(Uid)对应的联系人信息(Al),现在要查询每个Em联系人对应的数目,则建立如下的MapReduce
for (index in this.Al) {
emit(this.Al[index].Em, 1);
}
}
for (index in vals) {
sum += vals[index];
,