您的当前位置:首页正文

MongoDB中MapReduce的应用

2020-11-09 来源:步旅网

在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];
  • 显示全文