MongoDB Map Reduce

MongoDB Map-Reduce 简介 在使用 Map-Reduce 之前,需要定义 map 和 reduce 函数。map 函数负责提取数据的关键信息,而 reduce 函数负责将相同键的数据合并成一个结果。// map 函数// reduce 函数MongoDB Map-Reduce 是一种强大的数据处理模式,可以用于对大量数据进行批量处理和聚合操作。通过定义 map 和 reduce 函数,可以将数据转换成键值对,并对这些键值对进行处理。在使用 Map-Reduce 时,需要注意选择合适的键和限制数据量,以提高性能。 阅读详情

Map-Reduce是一种计算模型,简单的说是将大量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(RECUCE).
MongoDB提供的Map-Redeuce非常灵活,对于大规模数据分析也相当实用.

MapReduce命令

以下是MapRedcuce的基本语法:

>db.collection.mapReduce(
   function(){emit(key,value)},  //map函数
   function(key,values){return reduceFunction},  //reduce函数
   {
     out:collection,
     query:document,
     sort:document,
     limit:number
   }
)

使用MapReduce要实现两个函数:Map函数和Reduce函数,Map函数调用emit(key,value),遍历collection中所有的记录,将key与value传递给Reduce函数进行处理.
Map函数必须调用emit(key,value)返回键值对.
参数说明:

  • map 映射函数(生成键值对序列,作为reduce函数参数).
  • reduce 统计函数,reduce函数的会务就是将key-values变成key-value,也就是把values数组变成一个单一的值value.
  • out 统计结果存放集合(不指定则使用临时集合,在客户端断开后自己删除).
  • query 一个筛选条件,只有满足条件的文档才会调用map函数.(query,limit,sort可以任意组合)
  • sort 和limit结合的sort排序参数(也就是在发往map函数前给文档排序),可以优化分组机制
  • limit 发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)

    使用MapReduce

    考虑以下文档结构存储用户的文章,文档存储了用户的user_name和文章的status字段

>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "mark",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "mark",
   "status":"disabled"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "runoob",
   "status":"disabled"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "runoob",
   "status":"disabled"
})
WriteResult({ "nInserted" : 1 })
>db.posts.insert({
   "post_text": "MongoDb MapReduce",
   "user_name": "runoob",
   "status":"active"
})
WriteResult({ "nInserted" : 1 })

现在,我们将在posts集合中使用mapReduce函数来选取已发布的文章(status:”active”),并通过user_name分组,计算每个用户的文章数:

>db.posts.mapReduce( 
   function() { emit(this.user_name,1); }, 
   function(key, values) {return Array.sum(values)}, 
      {  
         query:{status:"active"},  
         out:"post_total" 
      }
)

以上mapReduce输出结果为:

{
        "result" : "post_total",
        "timeMillis" : 23,
        "counts" : {
                "input" : 5,
                "emit" : 5,
                "reduce" : 1,
                "output" : 2
        },
        "ok" : 1
}

结果表明,共有4个符合查询条件(status:”active”)的文档,在map函数中生成了4个键值对文档,最后使用reduce函数将相同的键值分为两级.
具体参数说明:

  • result 储存结果的collection的名称,这是个临时集合,MapRecuce的连接关闭后自动被删除了.
  • timeMills 执行花费的时间,毫秒为单位
  • input 满足条件被发送到map函数的文档个数
  • emit 在map函数中emit被调用的次数,也就是所有集合中的数据总量
  • output 结果集合中的文档个数(count对调试非常有帮助)
  • ok 是否成功,成功为1
  • err 如果失败,这里可以有失败原因,不过从经验上来看,原因比较模糊,作用不大

使用find操作符来查看mapReduce的查询结果:

>db.posts.mapReduce( 
   function() { emit(this.user_name,1); }, 
   function(key, values) {return Array.sum(values)}, 
      {  
         query:{status:"active"},  
         out:"post_total" 
      }
).find()

以上查询显示如下结果,两个用户tom和mark有两个发布的文章:

{ "_id" : "mark", "value" : 4 }
{ "_id" : "runoob", "value" : 1 }

用类似的方式,MapReduce可以被用来构建大型复杂的聚合查询.
Map函数的Reduce函数可以使用JavaScript来实现,使得MapReduce的使用非常的灵活和强大.

MongoDB Map Reduce 聚合 MongoDB Map Reduce Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。 MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。 MapReduce 命令 以下是MapReduce的基本语法: >db.collection.mapReduce( function() {emit(key,value);}, //map 函数 function(key,values 阅读详情

相关推荐

【electron】- 从零到一:在electron-vite项目中集成better-sqlite3的工程化实践

本文详细介绍了在electron-vite项目中集成better-sqlite3数据库的完整工程化实践。针对原生模块的编译挑战,提供了从环境配置、路径规划、服务封装到IPC通信的解决方案,并重点解决了开发与生产环境的数据库路径分离及打包部署等核心问题,帮助开发者构建稳定高效的Electron桌面应用数据层。

weixin_29306571的博客 205

MapReduce入门

1.MapReduce简介 MapReduce是一种分布式计算框架,用于大规模数据集的并行计算。 2.MapReduce框架 MapReduce框架中主要包括两个函数: Map和Reduce,这两个函数也是程序猿需要进行编程的函数。 MapReduce采用 “分而治之” 思想,将一个分布式文件系统中的大规模数据集切分成许多独立的切片,然后这些切片可以由多个map、reduce任务进行处理 MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,原因是, 移动数据需要大量的网络传输

莫心的博客 1540

逆向拆解dy接口a_bogus 1.0.1.19版本核心算法(纯算版)第二部分

本文深入解析了dy接口a_bogus 1.0.1.19版本的核心算法,重点介绍了逆向分析的基础方法论、魔改Base64编码识别与还原、随机数生成与位运算解析等关键技术。通过详细的代码示例和实用技巧,帮助开发者掌握逆向工程中的关键步骤,特别是针对a_bogus参数的生成逻辑和混淆处理。

weixin_29288313的博客 408

mongoDB mapreduce使用总结

大家都知道,mongodb是一个非关系型数据库,也就是说,mongodb数据库中的每张表是独立存在的,表与表之间没有任何依赖关系。在mongodb中,除了各种CRUD语句之外,还给我们提供了聚合和mapreduce统计的功能,这篇文章主要来跟大家聊聊mongodb的mapreduce的操

chenthe1的专栏 2979

别再到处找了!GWAS数据下载保姆级指南:从IEU、FinnGen到UK Biobank一站搞定

本文提供GWAS数据下载的全面指南,涵盖IEU OpenGWAS、FinnGen、UK Biobank等五大核心数据库的获取策略。从数据库选型到实战操作,详细解析数据搜索、下载、预处理全流程,帮助科研人员高效获取GWAS数据,特别适合初学者快速上手。

weixin_42523543的博客 1584

最速下降法、牛顿法、拟牛顿法,Python实现高维二次目标函数优化

原理什么的就不说了,只有代码。。。 十元二次目标函数,求极小值点。 1.最速下降法 import random import numpy as np import matplotlib.pyplot as plt from sympy import * def goldsteinsearch(f, df, d, x, alpham, rho, t): flag = 0 a = 0 b = alpham fk = f(x) gk = df(x)

我乐飞的技术博客 2243

MongoDB——聚合操作之MapReduce

目录一、MapReduce的概述二、MapReduce的阶段三、MapReduce的基本语法四、MapReduce示例4.1、 数据准备4.2、 MapReduce示例 一、MapReduce的概述 MapReduce操作将大量的数据处理工作拆分成多个线程并行处理,然后将结果合并在一起。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。 二、MapReduce的阶段 MapReduce具有两个阶段: (1)、将具有相同Key的文档数据整合在一起的map阶段; (2)、组合

小志的博客 2283

游戏开发实战:用UE4 Marschner模型打造次世代头发渲染(附Shader代码解析)

本文详细解析了如何在UE4中使用Marschner模型实现次世代头发渲染,包括Shader代码逐行解读与参数调优。通过对比传统Kajiya-Kay模型,展示了Marschner模型在物理精确性和视觉效果上的优势,并提供了性能优化与实战技巧,帮助技术美术师提升游戏角色渲染品质。

weixin_28223453的博客 240

MongoDB中的MapReduce详解

MongoDB作为一种流行的NoSQL数据库,提供了多种数据处理和分析的方式,其中MapReduce是一种强大的工具,用于处理大规模数据集。在MongoDB中,MapReduce可以使用JavaScript编写的Map和Reduce函数来处理集合中的数据。例如,可以对每个文档生成一个键值对,键是某个字段的值,值是文档的计数。例如,可以将相同键的值加起来,计算总数。:MapReduce提供了强大的数据处理能力,用户可以根据需要自定义Map和Reduce函数,处理复杂的数据聚合和分析任务。

My_wife_QBL的博客 1415

Floyd算法在社交网络中的应用:如何找到六度人脉的最短路径?

本文探讨了Floyd算法在社交网络分析中的核心应用,特别是如何利用该算法高效计算任意两人之间的最短路径,从而量化“六度人脉”理论。文章通过构建微型社交网络模型,详细拆解了Floyd算法的动态规划原理与代码实现,并展示了如何从计算出的最短路径距离矩阵中挖掘节点中心性、识别社群等关键洞察,为社交推荐、影响力分析等场景提供技术支撑。

blockchain9miner的博客 1002

ICC2:平行打孔create_pg_stapling_vias

power rail(follow pin)不总是metal1一成不变的,当需要使用metal2做power rail,而standard cell的pg pin仍然是metal1时就需要平行打孔,从metal2到metal1。 以往都是用create_pg_vias -allow_parallel_objects来做,但这样有两个弊端,一是需要抓出所有的via12(包括standard cell内部的和出pin绕线产生的),添加routing blockage,防止create pg via的时候产生d

m0_61544122的博客 2259

mongoDB--mapreduce用法详解(经典)

Map-Reduce部分:Map-Reduce相当于关系型数据库中的group by,主要用于统计数据之用。 先引入一个问题: 在MongoDB javascript Shell中对Array对象进行了一些扩展,其中新增sum方法,以方便统计数据之用的。 >Array.sum function(arr){ if(arr.length == 0) return null; var

GP的空间 1万+

fanuc机器人KAREL中 函数的应用

本次课程讲解编程的思路。很多的同学都玩过积木,一个一个的模块逐渐累积起来,通过彼此之间的相互联系,最终形成一个完整的整体。其实编程也是这样。 将一个对象根据其特点进行模块化拆分,尤其是一些特点非常相似的内容,将其变成一个模块。然后通过传递参数,实现不同的功能,这就是模块化编程。

haier123888的博客 2744

map型字段 mongodb_MongoDB Map Reduce

MongoDB Map ReduceMap-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。MapReduce 命令以下是MapReduce的基本语法:>db.collection.mapReduce(function() {emit(...

weixin_39784972的博客 172

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

map型字段 mongodb_在MongoDB中使用Map/Reduce

在MongoDB中使用Map/Reduce在mongodb的map-reduce是一个针对大数据的数据处理范式,可将大量数据浓缩成有用的聚合结果。对于map-reduce操作, MongoDB 提供mapReduce 数据库命令,这个命令意味什么呢?这个命令有两个初始输入, mapper 函数和reducer 函数.一个Mapper函数是开始读取数据集合,然后建立一个Map,Map的Key是我们...

weixin_29469949的博客 1198

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MongoDB Map-Reduce 操作文档

MongoDB的Map-Reduce是一种用于数据分析和聚合的方法。它将数据映射到一组中间键值对,然后将这些中间结果按照一定规则归并,最终生成结果。如果以上函数不满足你的需求,你可以编写自定义的Reduce函数,以执行更复杂的聚合操作。

个人博客地址为http://elikhb.top/ 983

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MongoDB 聚合操作Map-Reduce

MongoDB 聚合操作Map-Reduce

Mointor 880

MongoDB:19-MongoDB-Map Reduce

Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。 MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。 MapReduce 命令 以下是MapReduce的基本语法: >db.collection.mapReduce( function()

琦彦 1万+
上一篇: FindBugs PMD 和CheckStyle对比
下一篇: tomcat 重启命令
木子2025
博客等级 码龄16年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值