mongodb的mapreduce学习
博客专区 > ycxcg 的博客 > 博客详情
mongodb的mapreduce学习
ycxcg 发表于3年前
mongodb的mapreduce学习
  • 发表于 3年前
  • 阅读 14
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

1.reduce中的非线性  reduce会抵带

     MapReduce中emit后的Bosn的数据格式,一个大于100的Array,会被拆分存储,变成了非线性的链表结构。在reduce中使用 educed.score += val.score 语句可以智能地找到所有子结点的score并相加!

2.Map和reduce 特别关系

如果map中经过emit分组 只有一条数据  则不进入reduce中处理, 可以到finlize中处理

3.参数

db.runCommand(
 { mapreduce : 字符串,集合名,
   map : 函数,m函数
   reduce : 函数,r函数
   [, query : 文档,发往map函数前先给过渡文档]
   [, sort : 文档,发往map函数前先给文档排序]
   [, limit : 整数,发往map函数的文档数量上限]
   [, out : 字符串,统计结果保存的集合]
   [, keeptemp: 布尔值,链接关闭时临时结果集合是否保存]
   [, finalize : 函数,将reduce的结果送给这个函数,做最后的处理]
   [, scope : 文档,js代码中要用到的变量]
   [, jsMode : 布尔值,是否减少执行过程中BSON和JS的转换,默认true] //注:false时 BSON-->JS-->map-->BSON-->JS-->reduce-->BSON,可处理非常大的mapreduce,<br>                                    //true时BSON-->js-->map-->reduce-->BSON
   [, verbose : 布尔值,是否产生更加详细的服务器日志,默认true]
 }
);


out 参数

  • { replace : "collection name" } – 把老数据删除掉,重新加入数据

  • { merge : "collection name" } – 将新老数据进行合并,新的替换旧的,没有的添加进去

  • { reduce : "collection name" } – 存在老数据时,在原来基础上加新数据(

query 参数:

     query : {"event_time": { "$gte" : today_start, "$lte":today_end}, "$or" : [{ "_id.date" : yesterday }, { "_id.date" : today }]},


共有 人打赏支持
粉丝 0
博文 1
码字总数 394
×
ycxcg
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: