惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
A
About on SuperTechFans
J
Java Code Geeks
量子位
博客园 - 三生石上(FineUI控件)
博客园 - Franky
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - ideas

从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值。 移除google搜索结果中烦人的URL跟踪跳转 关于分页存储过程的优化【让数据库按我们的意思执行查询计划】 DiscuzNT首页版块提取优化 中国娱乐网招聘asp.net软件工程师 几个有用的DMV查询 【转】Iframe高度自适应(兼容IE/Firefox、同域/跨域) 【转】MAQETTA: 基于HTML5的开源可视化界面设计工具 高效能人士的七个习惯 有《基于行块分布函数的通用网页正文抽取》想到的 MongoDB系列文章推荐 【转】linux screen 命令详解 - [linux] 关于添加索引视图后的数据存储区别 索引视图 添加计算列,并创建索引 浏览器的加载与页面性能优化【转】 IO瓶颈 内存瓶颈 Windows Live Writer 插件 Source Code Plug-in
MongoDB 学习笔记—MapReduce
ideas · 2011-03-28 · via 博客园 - ideas
db.runCommand(
 { mapreduce : <collection>,
   map : <mapfunction>,
   reduce : <reducefunction>
   [, query : <query filter object>]
   [, sort : <sort the query.  useful for optimization>]
   [, limit : <number of objects to return from collection>]
   [, out : <see output options below>]
   [, keeptemp: <true|false>]
   [, finalize : <finalizefunction>]
   [, scope : <object where fields go into javascript global scope >]
   [, verbose : true]  }
);

  这两天小小的学习了一下MongoDB,关于MapReduce的介绍就不再多说,可以参考官方文档:http://www.mongodb.org/display/DOCS/MapReduce,使用示例可以看这里:https://github.com/mongodb/mongo/blob/master/jstests/mr5.js,这里仅从个人理解角度对MapReduce的工作步骤做个简单记录:

  1. 对collection进行查询。
  2. 对查询结果使用map函数进行处理,在map方法中至少要调用一次内置函数emit,该函数需要两个参数。第一个是参数key,可以理解为关系数据库查询中的group by的字段,第二个是参数是value,也就是要进行聚合操作的字段。emit的作用是根据key,把value组合为一个数组,为reduce提供输入参数值。
      • 例:
        m = function(){
        	if (this.userid==123){
        		emit(this.userid, this.money)
        	}
        }
  3. 执行reduce处理,reduce需要两个参数,第一个参数是key,第二个参数是value数组,也就是上一步中产生的结果。在这个函数里进行聚合处理,并返回处理后的对象。
    1. 例:
      r = function(key, values){
      	var sum = 0;
      	for (var i = 0; i < values.length; i ++)
      	{
      		sum += values[i];
      	}
      	return {userid : key, sum : sum};
      }
  4. 对上一步的结果进行finalize处理。
  5. 把结果输出到out指定的目标。(v1.7以上版本可以指定out:{inline : 1} 直接返回结果集)
db.users.mapReduce(m, r, {out : {inline : 1}})