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.首先 在 ...
随机推荐
- setRequestedOrientation
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//通过程序改变屏幕显示的方向 1.landscape:横屏(风景 ...
- python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool
报错信息 Traceback (most recent call last): File "<stdin>", line 1, in <module> Fi ...
- Lua语法基础(3)--迭代器和泛型for
迭代器和闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功 ...
- 碰撞器与触发器[Unity]
请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加 ...
- 20150117_js_设置时间的显示格式
/* *设置显示时间格式 *@param: 原始时间 yyyy-MM-dd HH:mm:ss */ function SetDisTime(oldTime) { var nowDate = new D ...
- 【MLE】最大似然估计Maximum Likelihood Estimation
模型已定,参数未知 已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值.最大似然估计是建立在这样的思想上:已知某个参数能使这个 ...
- linux中chmod与chown两个命令详解
在linux系统中chmod,chown命令都可以来设置权限了,但它们也是有区别的,下文小编为各位介绍chmod与chown两个命令用法与区别介绍. 今天要分享的2个命令也是我们平时常用的,chmod ...
- 分布式唯一id生成器的想法
0x01 起因 前端时间遇到一个问题,怎么快速生成唯一的id,后来采用了hashid的方法.最近在网上读到了美团关于分布式唯一id生成器的解决方案, 其中提到了三种生成法:(建议看一下这篇文章,写得很 ...
- JAVA环境变量配置详解(Windows)
JAVA环境变量配置详解(Windows) JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLA ...
- android开发(30) 使用WebView,点击网页中的链接建立QQ 临时会话 WPA
在PC端,我们可以通过一个URL链接,点击后启动QQ,这是很好的用户跳转体验.很方便. 使用的链接如下: <a target="_blank" href="http ...