`
dasimm
  • 浏览: 4997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 操作mongoDB执行group by

阅读更多
最近公司要用Mongodb,学习了一下。
关于mongo的group by的用法有一个实例,写下来防止时间长了忘了。
具体的要求是要查询一段时间内消费的会员的总数,要求去重
表结构大致是
{user_id,
 ......,
 consume{
    ....,
    time,
    ....
  },
...}


查询的结果集是
> db.consume.find({"consume.time.":{$gt:"0"}},{_id:0,user_id:1,"consume.time":1}).sort({"consuem.time":1}).limit(5);
{ "consume" : { "time" : "1314583316" }, "user_id" : "34800268" }
{ "consume" : { "time" : "1314583319" }, "user_id" : "67400937" }
{ "consume" : { "time" : "1314583321" }, "user_id" : "130041511" }
{ "consume" : { "time" : "1314583328" }, "user_id" : "4450046611" }
{ "consume" : { "time" : "1314583336" }, "user_id" : "20036266" }


执行mongo的SQL大概是
db.consume.group({ key:{"user_id":true} ,cond:{"consume.time":{$gt:"1314583316",$lt:"1314583336"}},initial:{co:0},reduce:function(oj,pr){pr.co++}  } )


java代码是
DBCollection userSColl = MongoDBUtils.getDBCollection("consume");
BasicDBObject key = new BasicDBObject("user_id",true);
BasicDBObject cond = new BasicDBObject("consume.time",new BasicDBObject("$gt","1314583316").append("$lt", "1314583336"));
	BasicDBObject initial = new BasicDBObject("cou",0);
String reduce = "function(obj,pre){pre.cou++}";
BasicDBList returnList = (BasicDBList)userSColl.group(key, cond, initial, reduce);

然后去一下size

看了下mongo的doc发现还有
List list = userSColl.distinct("user_id", new BasicDBObject("consume.time",new BasicDBObject("$gt","1314583316").append("$lt", "1314583336")));


不过不知道有没有直接求出count的方法,研究下如果有再补上


参考文档是:http://www.mongodb.org/display/DOCS/Aggregation
分享到:
评论

相关推荐

    mongodb_java_2.6_API

    MongoDB的聚合框架允许对数据进行处理,类似于SQL的GROUP BY和JOIN操作。Java API提供了`Aggregation`接口来实现这个功能。 10. **地理空间操作** MongoDB支持地理空间索引和查询,Java API提供了相关的类和方法...

    mongoDB java driver api

    8. **聚合框架**:MongoDB的聚合框架允许你对数据进行处理和分析,类似于SQL的GROUP BY和JOIN操作。Java驱动提供了`aggregate()`方法来执行聚合操作,包括阶段(如 `$match`, `$group`, `$sort`, `$project` 等)。 ...

    JAVA mongodb 聚合几种查询方式详解

    如果需要添加多个分组条件,可以使用 `GroupBy.put()` 方法添加新的条件。 分组后查询 在分组后,需要指定查询的字段和操作符,例如,统计用户的数量: ```java DBObject Select = new BasicDBObject("_id", Group...

    JAVA代码实现MongoDB动态条件之分页查询

    "JAVA代码实现MongoDB动态条件之分页查询" 本文主要介绍了使用JAVA实现MongoDB动态条件之分页查询,通过讲解详细的代码实现,帮助读者更好地理解和学习。下面是对标题和描述中所说的知识点的详细说明: 一、使用...

    mongodb.dll 下载.zip

    4. **聚合框架**:MongoDB提供了强大的聚合框架,允许用户进行复杂的数据处理和分析,类似SQL的GROUP BY和JOIN操作。 5. **副本集**:为了实现高可用性,MongoDB可以设置副本集,其中至少有一个主节点和一个或多个...

    mongodb连接jar包

    - **聚合框架**:MongoDB提供了聚合框架,用于对数据进行分析和处理,类似于SQL中的GROUP BY和JOIN操作。 - **索引**:为了提高查询性能,可以为集合创建索引。MongoDB支持单字段、复合、地理空间等多种类型的索引...

    springboot整合mongodb详解

    例如,我们可以使用`@Query`注解执行自定义的MongoDB查询,或者利用`@Entity`和`@Table`注解来定义实体和集合关系。 总结,SpringBoot整合MongoDB提供了丰富的API和便捷的配置,使得开发人员能够轻松地进行数据存储...

    MongoDB-JavaAPI

    本项目聚焦于MongoDB的Java API使用,帮助开发者理解如何在Java应用程序中执行类似于SQL的操作。 MongoDB Java API是官方提供的驱动程序,它允许Java开发者轻松地连接到MongoDB服务器,执行CRUD(创建、读取、更新...

    mongodb 使用手册

    - `db.runCommand({aggregate: 'collection', pipeline: [...pipeline...], cursor: {...}})`:执行聚合操作,类似SQL的GROUP BY。 ### 第 4 章 Java 操作 MongoDB 这部分内容正在整理中,通常会涵盖Java驱动的...

    mongodb实战中文pdf

    5. **聚合框架**:MongoDB的聚合框架用于处理数据管道,进行数据转换和分析,类似于SQL中的GROUP BY和JOIN操作。 6. **副本集**:MongoDB的副本集技术提供数据冗余和高可用性,通过在多个节点间复制数据,确保服务...

    mongoDB需要的三个Jar包的副本.zip

    - 使用聚合框架:MongoDB Java Driver支持聚合框架,允许开发者进行复杂的分析和数据处理操作,类似于SQL的GROUP BY、JOIN等。 - 插入和查询BSON文档:通过`Document`类,可以直接操作BSON文档,将其作为键值对的...

    mongodb教程

    MongoDB 的聚合框架允许你对数据进行分析和处理,类似于SQL的GROUP BY操作。它支持管道操作,可以进行数据转换、过滤、分组、排序等多种操作。 8. MapReduce 虽然MongoDB的聚合框架在很多场景下更高效,但它仍然...

    Mongodb 视频

    MongoDB的聚合框架提供了对数据进行复杂分析的能力,类似于SQL的GROUP BY和JOIN操作。MapReduce是另一种用于处理和生成大量数据的计算模型,它可以并行处理数据,适合大数据环境下的数据分析。 七、应用程序接口API...

    mongodb.zip

    MongoDB的聚合框架允许开发者对数据进行处理,类似于SQL的GROUP BY、JOIN等操作,但更为灵活。 13. **GridFS**: 对于存储大文件,MongoDB提供了GridFS,将文件拆分为多个块存储在两个特定的集合中。 总结,...

    mongodb开发精要 书籍 两本PDF

    1. CRUD操作:MongoDB提供了CRUD(Create、Read、Update、Delete)的基本操作,你可以使用Shell、各种语言驱动程序(如Python、Java、Node.js等)或者MongoDB的管理工具来执行这些操作。 2. 查询语言:MongoDB的查询...

    mongoTemplate实现统计和分组

    "MongoDB 使用 MongoTemplate 实现统计和...在执行完毕后,我们可以从 result 中获取统计结果,例如 party支部内人员的数目。 使用 MongoTemplate 可以轻松地实现统计和分组,并且可以避免使用聚合框架时的一些问题。

    mongodb-win32-x86_64-2.0.6.zip

    6. **聚合框架**:MongoDB的聚合框架允许用户在服务器端执行复杂的数据分析和报告,类似于SQL的GROUP BY操作。 7. **GridFS**:MongoDB提供了一个名为GridFS的文件存储系统,用于存储和检索大型文件,如图片或视频...

    MongoDB离线参考手册-菜鸟教程离线版

    6. **聚合框架**:MongoDB提供了聚合管道,用于对数据进行处理,类似SQL的GROUP BY和JOIN操作。聚合操作可以用于统计、分析和汇总数据。 7. **索引**:如何创建、管理和优化索引以提高查询性能。包括单字段索引、...

    MongoDB 终极指南

    这在关系数据库中通常需要使用SQL的GROUP BY语句实现。 6. **索引**:为了提升查询性能,MongoDB允许为文档的特定字段创建索引。单字段、复合索引、唯一索引和地理空间索引都是可用的选择。 7. **复制集**:复制集...

Global site tag (gtag.js) - Google Analytics