map和reduce是十分有用的操作,特别是在NOSQL中.本文简单小结下
在mongodb中对mapreduce的操作,以及在JAVA中如何操作.
1 启动mongodb
mongo启动即可
2 建立db
use test
3 加点记录
> book1 = {name : "Understanding JAVA", pages : 100}
> book2 = {name : "Understanding JSON", pages : 200}
> db.books.save(book1)
> db.books.save(book2)
继续加
> book = {name : "Understanding XML", pages : 300}
> db.books.save(book)
> book = {name : "Understanding Web Services", pages : 400}
> db.books.save(book)
> book = {name : "Understanding Axis2", pages : 150}
> db.books.save(book)
4 先来做MAP,这里是先归类,按页数去划分分类,如下:
- > var map = function() {
- var category;
- if ( this.pages >= 250 )
- category = 'Big Books';
- else
- category = "Small Books";
- emit(category, {name: this.name});
- };
5 然后再按reduce来统计个数
- > var reduce = function(key, values) {
- var sum = 0;
- values.forEach(function(doc) {
- sum += 1;
- });
- return {books: sum};
- };
6 然后再查看下,结果显示为:
> var count = db.books.mapReduce(map, reduce, {out: "book_results"});
> db[count.result].find()
{ "_id" : "Big Books", "value" : { "books" : 2 } }
{ "_id" : "Small Books", "value" : { "books" : 3 } }
7 换用JAVA去实现之,注意下载mongodb的驱动,代码如下:
- import com.mongodb.BasicDBObject;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBObject;
- import com.mongodb.MapReduceCommand;
- import com.mongodb.MapReduceOutput;
- import com.mongodb.Mongo;
-
- public class MongoClient {
-
-
-
-
- public static void main(String[] args) {
-
- Mongo mongo;
-
- try {
- mongo = new Mongo("localhost", 27017);
- DB db = mongo.getDB("library");
-
- DBCollection books = db.getCollection("books");
-
- BasicDBObject book = new BasicDBObject();
- book.put("name", "Understanding JAVA");
- book.put("pages", 100);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding JSON");
- book.put("pages", 200);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding XML");
- book.put("pages", 300);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding Web Services");
- book.put("pages", 400);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding Axis2");
- book.put("pages", 150);
- books.insert(book);
-
- String map = "function() { "+
- "var category; " +
- "if ( this.pages >= 250 ) "+
- "category = 'Big Books'; " +
- "else " +
- "category = 'Small Books'; "+
- "emit(category, {name: this.name});}";
-
- String reduce = "function(key, values) { " +
- "var sum = 0; " +
- "values.forEach(function(doc) { " +
- "sum += 1; "+
- "}); " +
- "return {books: sum};} ";
-
- MapReduceCommand cmd = new MapReduceCommand(books, map, reduce,
- null, MapReduceCommand.OutputType.INLINE, null);
-
- MapReduceOutput out = books.mapReduce(cmd);
-
- for (DBObject o : out.results()) {
- System.out.println(o.toString());
- }
- } catch (Exception e) {
-
- e.printStackTrace();
- }
- }
- }
相关推荐
MongoDB是一种流行的NoSQL数据库,它以其灵活的数据模型和高性能而闻名。...通过学习MongoDB中的MapReduce和管理工具的使用,开发者和数据库管理员可以更加高效地完成任务,提升工作效率和数据处理能力。
MongoDB的MapReduce是一种强大的工具,用于处理和分析大量数据,尤其适合于复杂的数据聚合任务。MapReduce的工作原理是将大规模数据集分解成小块,分别在不同的节点上执行计算,然后将结果合并以得到最终答案。在...
MongoDB的MapReduce功能是基于分布式计算模型的一种数据处理方式,它允许用户在数据库中进行大规模数据处理。MapReduce的核心思想是将复杂的数据处理任务分解为两个主要阶段:Map阶段和Reduce阶段。 Map阶段是数据...
8. MapReduce:虽然现代MongoDB推荐使用聚合框架,但MapReduce仍然是一种处理大数据的手段,用于批量数据处理和分析。 9. 安全性:MongoDB支持用户认证、角色权限控制和加密通信,保障数据安全。 10. 应用集成:...
MongoDB不仅提供了高性能的数据访问,而且还支持高级功能,如索引、分片(sharding)、复制(replication)和MapReduce等,这些特性使其成为处理大规模数据的理想选择。此外,MongoDB拥有一个庞大且活跃的社区,这...
MongoDB的MapReduce是一种强大的数据分析工具,用于处理和聚合大量数据。它借鉴了函数式编程的概念,通过两个主要函数——`map`和`reduce`,以及可选的`finalize`函数,来对数据库中的数据进行复杂的操作。在这个...
在这个"阿里云EMR spark kafka redis MongoDB例子demo"中,我们看到了如何整合这些技术,构建一个实时数据处理系统,从Kafka获取数据,利用Spark Streaming进行实时分析,然后将结果存储到Redis和MongoDB,实现了...
此外,MongoDB 支持索引,以提高查询性能,同时也提供了聚合框架(aggregation framework)和 mapReduce 功能,用于数据处理和分析。 在应用场景方面,MongoDB 适用于数据模型简单、需求变化频繁的项目。例如,在...
内容概要:本文档是一份针对MongoDB数据库的基本CRUD操作的学习指南。文中详细介绍了如何利用MongoDB进行文档的插入、更新、查询、...建议在实验环境搭建好后再进行学习,并亲自尝试每一个例子以获得更好的学习效果。
下面是一个使用Python的pymongo库连接MongoDB的例子,展示如何插入和查询文档: ```python # 导入pymongo库 from pymongo import MongoClient # 连接到MongoDB client = MongoClient('localhost', 27017) db = ...
在MongoDB中,聚合有两种主要形式:Pipeline聚合和MapReduce聚合。 1. Pipeline聚合: - `$match`:用于过滤输入文档,只保留满足特定条件的文档。 - `$project`:用于选择要包含在输出文档中的字段,以及转换...
MongoDB 是一个功能强大且灵活的 NoSQL 数据库,它提供了许多有用的特性和功能,例如数据存储、索引、查询、聚合、MapReduce 等。然而,在实际应用中,安全性是非常重要的一个方面,MongoDB 提供了多种方式来保护...
这个例子展示了如何使用MapReduce对`test`集合进行分组并计算`count`字段的总和,避免了`group`操作的问题。 需要注意的是,这些解决方案适用于特定的软件版本。在本例中,使用的MongoDB版本为1.6.5,PECL Mongo...
Mongoika简化了构建行为,使其表现得像惰性序列,并使用Mongo Java驱动程序支持基本操作MapReduce和GridFS。 例子 ; ; Use mongoika namespace. ( use 'mongoika) ; ; Connect to a MongoDB server. ( with-mongo...
本文将详细介绍MongoDB中的聚合操作,包括`count`、`distinct`、`group`以及相对复杂的`mapReduce`,并简要介绍游标的概念。 ### 1. 聚合操作 #### (1) `count` `count`方法用于统计集合中的文档数量,非常直观且...