MongoDB MapReduce 小例子

var map = function(){
if (this.gscode == "ZTJB"){
ymd = this.ymd;
emit("maxymd", ymd);
}
}
var reduce = function(key, values){
var maxYmd = values[0];
for (var i=1; i<values.length; i++){
if (maxYmd < values[i]){
maxYmd = values[i];
}
}
return maxYmd;
}
db.getCollection('calcgsdataflash').mapReduce(
map,
reduce,
{out:{inline:1}}
);
C API 小例子:
官方文档地址:http://mongoc.org/libmongoc/1.8.2/distinct-mapreduce.html
vector<string> vMaxDate;
const char *const MAPPER = "function(){"
"Date = this.Date;"
"emit('maxDate',Date)"
"}"; const char *const REDUCER = "function(key, values){"
"var maxDate = values[0];"
"for (var i=1; i<values.length; i++){"
"if (maxDate < values[i]){"
"maxDate = values[i];"
"}"
"}"
"return maxDate;"
"}"; m_mongoDBMgr.MapReduce(MAPPER, REDUCER, vMaxDate);
for (vector<string>::iterator iter = vMaxDate.begin(); iter != vMaxDate.end(); iter++)
{
Json::Reader reader;
Json::Value value;
if (reader.parse((*iter).c_str(), value))
{
iMaxDate = value["value"].asInt();
TLOG_DEBUG("L2Dynamic iMaxDate:" << iMaxDate << endl);
}
}//maxYmd bool CMongoDBMgr::MapReduce(const char *const MAPPER, const char *const REDUCER, vector<string> &vData)
{
TLOG_DEBUG("begin MapReduce" << endl); bson_t reply;
bson_t *command;
bson_error_t error;
mongoc_cursor_t *cursor;
const bson_t *doc; bool map_reduce_done = false;
bool query_done = false; const char *out_collection_name = "outCollection";
mongoc_collection_t *out_collection; bson_t find_query = BSON_INITIALIZER; //do MapReduce
command = BCON_NEW (
"mapReduce",
BCON_UTF8 (m_sCollection.c_str()),
"map",
BCON_CODE (MAPPER),
"reduce",
BCON_CODE (REDUCER),
"out",
BCON_UTF8 (out_collection_name)
);
bool bRet = mongoc_database_command_simple (m_database, command, NULL, &reply, &error);
map_reduce_done = true;
if (!bRet)
{
TLOG_DEBUG("MapReduce failed:" << error.message << endl);
goto cleanup;
return false;
} //do query
out_collection = mongoc_database_get_collection (m_database, out_collection_name); cursor = mongoc_collection_find_with_opts (out_collection, &find_query, NULL, NULL);
query_done = true; while (mongoc_cursor_next (cursor, &doc))
{
char *str;
str = bson_as_json(doc, NULL);
vData.push_back(str);
} if (mongoc_cursor_error (cursor, &error))
{
TLOG_DEBUG("An error occurred:" << error.message << endl);
goto cleanup;
return false;
} cleanup:
if (map_reduce_done)
{
bson_destroy (&reply);
bson_destroy (command);
} if (query_done)
{
mongoc_cursor_destroy(cursor);
mongoc_collection_destroy (out_collection);
} return true;
}
MongoDB MapReduce 小例子的更多相关文章
- MongoDB MapReduce(转)
MapReduce MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE).这样做的好处是可以在任务被分解后,可以通过大量机 ...
- 《hadoop权威指南》关于hive的第一个小例子的演示
本文是<hadoop权威指南>关于hive的小例子,通过这个例子可以很好地看出来hive是个什么东西. 前提是已经配置好hive的远程连接版本的环境,我是用了MYSQL数据库保存元数据. ...
- springmvc入门的第一个小例子
今天我们探讨一下springmvc,由于是初学,所以简单的了解一下 springmvc的流程,后续会持续更新... 由一个小例子来简单的了解一下 springmvc springmvc是spring框 ...
- java即时通信小例子
学习java一段时间了,今天写来一个即时通信的小例子练手在其过程中也学到了一些知识拿出来和大家分享,请路过的各位大神多多赐教... 好了下面讲一下基本的思路: 首先,编写服务器端的程序,简单点说吧就是 ...
- Runtime的几个小例子(含Demo)
一.什么是runtime(也就是所谓的“运行时”,因为是在运行时实现的.) 1.runtime是一套底层的c语言API(包括很多强大实用的c语言类型,c语言函数); [runti ...
- bootstrap 模态 modal 小例子
bootstrap 模态 modal 小例子 <html> <head> <meta charset="utf-8" /> <title ...
- INI配置文件分析小例子
随手写个解析INI配置字符串的小例子 带测试 #include <iostream> #include <map> #include <string> #inclu ...
- JavaScript小例子:复选框全选
JavaScript小例子:复选框全选 这只是一个小例子,很简单,但是这个功能还是很常用的: 实现后效果如图: JavaScript代码: <script type="text/jav ...
- 【zTree】 zTree使用的 小例子
使用zTree树不是第一次了 但是 还是翻阅着之前做的 对照着 使用起来比较方便 这里就把小例子列出来 总结一下使用步骤 这样方便下次使用起来方便一点 使用zTree树的步骤: 1.首先 在 ...
随机推荐
- TimescaleDB比拼InfluxDB:如何选择合适的时序数据库?
https://www.itcodemonkey.com/article/9339.html 时序数据已用于越来越多的应用中,包括物联网.DevOps.金融.零售.物流.石油天然气.制造业.汽车.太空 ...
- UI设计文本框解决Placeholder的在IE10 以下 IE 9 IE8 IE 7 的兼容问题
创建JS文件 placeholderfriend.js (function($) { /** * 牛叉的解决方案 */ var placeholderfriend = { focus: functio ...
- 歌曲播放页面的数据vuex管理
1.state.js import {playMode} from '@/common/js/config' const state = { singer:{}, playing:false, ful ...
- 【转】MySQL查看表占用空间大小(转)
//先进去MySQL自带管理库:information_schema //自己的数据库:rokid_cas_music_test //自己的表:data_song_thirdparty mysql&g ...
- Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)【转】
[转自:]http://blog.csdn.net/hitwengqi/article/details/8008203 最近一直在自学Hadoop,今天花点时间搭建一个开发环境,并整理成文. 首先要了 ...
- Lintcode: Subarray Sum 解题报告
Subarray Sum 原题链接:http://lintcode.com/zh-cn/problem/subarray-sum/# Given an integer array, find a su ...
- JIRA python篇之展示多人未完成任务列表
[本文出自天外归云的博客园] 通过python中的jira类我们可以方便的操作jira,获取一些我们想要再加工的信息. 这里举例,用html页面的形式展示分派给组内每个人的任务(未完成的.正在进行中的 ...
- Mybatis之工作原理
1.Mybatis的架构 1.1 Mybatis的框架分层 1.2 MyBatis的实现原理 mybatis底层还是采用原生jdbc来对数据库进行操作的,它支持定制化 SQL.存储过程以及高级映射的优 ...
- java基础篇---JSP内置对象详解
在JSP中为了简化用户的开发,提供了九个内置对象,这些内置对象将由容器为用户进行实例化,而用户直接使用即可,而不用像在java中那样,必须通过关键字new进行实例化对象之后才可以使用. No. 内 ...
- 迭代器模式和组合模式(head first设计模式——8)
把迭代器模式和组合模式放在同一篇的原因是其联系比较紧密. 一.迭代器模式 1.1迭代器模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示. 这个模式提供了一种方法 ...