最近在学习Mongodb,作为入门,选择了《Mongodb权威指南》这本书来进行参考学习。目前看到了MapReduce,由于我用的版本比较新,发现了和书上有些不同的地方。
应用场景:
使用MapReduce找出一个集合中所有的键的个数,mongo shell代码如下:
定义map function:
map = function () {
for (var key in this) {
emit(key, {count:1});
}
}
定义reduce function:
reduce = function (key, emits) {
total = 0;
for (var i in emits) {
total += emits[i].count;
}
return {count:total};
}
执行MapReduce操作:
mr = db.runCommand({"mapreduce":"users","map":map,"reduce":reduce})
以上都是书上的代码,但是执行后没有正常返回,而是返回了如下结果:
{
"assertion" : "'out' has to be a string or an object",
"assertionCode" : 13606,
"errmsg" : "db assertion failure",
"ok" : 0
}
网上百度了下才知道原来1.8以上的版本需要指定out的输出
修改了执行MapReduce命令后执行正常,命令如下:
mr = db.runCommand({"mapreduce":"users","map":map,"reduce":reduce,"out":{inline:1}})
也可以使用如下命令方式:
db.users.mapReduce(map,reduce,{out:{inline:1}})
执行后返回结果如下:
{
"results" : [
{
"_id" : "_id",
"value" : {
"count" : 3
}
},
{
"_id" : "age",
"value" : {
"count" : 1
}
},
{
"_id" : "email",
"value" : {
"count" : 1
}
},
{
"_id" : "emails",
"value" : {
"count" : 1
}
},
{
"_id" : "favorite book",
"value" : {
"count" : 1
}
},
{
"_id" : "hobby",
"value" : {
"count" : 1
}
},
{
"_id" : "name",
"value" : {
"count" : 3
}
},
{
"_id" : "score",
"value" : {
"count" : 2
}
}
],
"timeMillis" : 311,
"counts" : {
"input" : 3,
"emit" : 13,
"reduce" : 3,
"output" : 8
},
"ok" : 1
}
官网文档地址:http://www.mongodb.org/display/DOCS/MapReduce#MapReduce-Outputoptions
分享到:
相关推荐
mongodb-spark官方连接器,运行spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:1.1.0可以自动下载,国内网络不容易下载成功,解压后保存到~/.ivy2目录下即可。
在这个“MongoDB MapReduce 分享”中,我们将深入探讨 MapReduce 在 MongoDB 中的应用及其核心概念。 MapReduce 包含两个主要函数:Map 和 Reduce。Map 阶段负责将输入数据分解成小块,然后对每一块应用一个函数,...
MongoDB程序员认证: MongoDB Certified Developer Study Guide - Study Guide - Exam Preparation - Practise Questions
MongoDB查询语言:分片处理
MongoDB查询语言:备份与恢复
sudo chown -R mongodb:mongodb /var/log/mongodb ``` - **连接问题**: - 确保MongoDB服务正在运行。 - 检查防火墙设置,确保其允许连接到MongoDB默认端口(27017)。 #### 7. 总结 通过上述步骤,你可以在...
如果在下载过程中遇到网络问题,导致“Download failed”或“DownloadError: Failed to download resource “mongodb-community””,你可以多次尝试安装命令,以完成下载。 安装完成后,MongoDB的相关配置文件位于...
04mongodb基本概念:文档.mp4
mongodb-org-tools ,包含以下MongoDB工具:mongoimport bsondump,mongodump,mongoexport,mongofiles,mongorestore,mongostat和mongotop。 docker build --rm -t thelebster/mongo-shell-example .docker run ...
第三方mongo spark连接器,运行spark-submit --packages com.stratio.datasource:spark-mongodb_2.10:0.11.2可以自动下载,国内网容易下载失败,把这个文件解压后拷贝到~/.ivy2目录下即可。 ...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
mongodb 命令行mongod启动报错 about to fork child process, waiting until server is ready for connections. forked process: 3560 ERROR: child process failed, exited with error number 1 To see additional ...
- 启动MongoDB:`sudo systemctl start mongodb` - 设置开机启动:`sudo systemctl enable mongodb` 6. **手动创建启动脚本** 如果系统确实不支持Init.d,但需要使用旧的启动方式,可以手动创建一个启动脚本。这...
Getting Started with Installation and coding with Mongo Shell 5: MongoDB Explained 6: Administering MongoDB 7: MongoDB Use Cases and How To’s – Know How To’s for using MongoDB to its best. ...
然后我使用以下命令将文件中的所有单词导入到 MongoDB 数据库中: time mongoimport --type csv -c Words --file word_list.txt --headerline ##### 操作时间:0.758 秒。 ### 搜索字谜 为了查找字谜,我编写,...
MongoDB 进阶与实战:微服务整合、性能优化、架构管理 MongoDB 是一种流行的开源非关系型数据库(NoSQL),它以文档为模型,使用类似于 JSON 的 BSON 格式进行数据存储。MongoDB 具有强大的查询和索引功能,并且...