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.首先 在 ...
随机推荐
- .NET MVC5+ Dapper+扩展+AutoFac自动注入实现
1.首先创建一个MVC项目 定义Model 层 view 层 index.cshtml 控制器层Controllers等文件 2.在线安装或者引用dapper 以及扩展相关包 同时Autofac ...
- pandas数组(pandas Series)-(3)向量化运算
这篇介绍下有index索引的pandas Series是如何进行向量化运算的: 1. index索引数组相同: s1 = pd.Series([1, 2, 3, 4], index=['a', 'b' ...
- Android开发中adb命令的常用方法
Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于 ...
- c++map的用法
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数: map<stri ...
- C++ struct 和 Class的区别
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能. struct能包含成员函数吗? 能!!! struct能继承吗? 能!! ...
- python将列表元素按指定数目分组
比如,有时候,我们需要将列表中的元素,按照每5个分组,分成好几个组时,可以采用下面的代码 a = [1,2,3,4,5,6,7,8,9,10,11] step = 5 b = [a[i:i+step] ...
- 图解zookeeper FastLeader选举算法【转】
转自:http://codemacro.com/2014/10/19/zk-fastleaderelection/ zookeeper配置为集群模式时,在启动或异常情况时会选举出一个实例作为Leade ...
- MySQL字段数据全部查出【只保留中文、英文、数字、空格的词表】
select * from xxx_xxx_bak where slot_type_id in ('xxx', 'xxx') ; by @大超超 记录备查
- django model form 保存方法 django-rest-framework save 修改某一项值 方法
django Model Form django-rest-framework save 方法 修改某个数据的值
- JAVA-JSP内置对象之application对象获得其他信息
相关资料:<21天学通Java Web开发> application对象获得其他信息1.通过调用application对象的其他方法可以获得更多信息,如文件的MIME类型.获得指定Loca ...