最近公司要用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的聚合框架允许对数据进行处理,类似于SQL的GROUP BY和JOIN操作。Java API提供了`Aggregation`接口来实现这个功能。 10. **地理空间操作** MongoDB支持地理空间索引和查询,Java API提供了相关的类和方法...
8. **聚合框架**:MongoDB的聚合框架允许你对数据进行处理和分析,类似于SQL的GROUP BY和JOIN操作。Java驱动提供了`aggregate()`方法来执行聚合操作,包括阶段(如 `$match`, `$group`, `$sort`, `$project` 等)。 ...
如果需要添加多个分组条件,可以使用 `GroupBy.put()` 方法添加新的条件。 分组后查询 在分组后,需要指定查询的字段和操作符,例如,统计用户的数量: ```java DBObject Select = new BasicDBObject("_id", Group...
"JAVA代码实现MongoDB动态条件之分页查询" 本文主要介绍了使用JAVA实现MongoDB动态条件之分页查询,通过讲解详细的代码实现,帮助读者更好地理解和学习。下面是对标题和描述中所说的知识点的详细说明: 一、使用...
4. **聚合框架**:MongoDB提供了强大的聚合框架,允许用户进行复杂的数据处理和分析,类似SQL的GROUP BY和JOIN操作。 5. **副本集**:为了实现高可用性,MongoDB可以设置副本集,其中至少有一个主节点和一个或多个...
- **聚合框架**:MongoDB提供了聚合框架,用于对数据进行分析和处理,类似于SQL中的GROUP BY和JOIN操作。 - **索引**:为了提高查询性能,可以为集合创建索引。MongoDB支持单字段、复合、地理空间等多种类型的索引...
例如,我们可以使用`@Query`注解执行自定义的MongoDB查询,或者利用`@Entity`和`@Table`注解来定义实体和集合关系。 总结,SpringBoot整合MongoDB提供了丰富的API和便捷的配置,使得开发人员能够轻松地进行数据存储...
本项目聚焦于MongoDB的Java API使用,帮助开发者理解如何在Java应用程序中执行类似于SQL的操作。 MongoDB Java API是官方提供的驱动程序,它允许Java开发者轻松地连接到MongoDB服务器,执行CRUD(创建、读取、更新...
- `db.runCommand({aggregate: 'collection', pipeline: [...pipeline...], cursor: {...}})`:执行聚合操作,类似SQL的GROUP BY。 ### 第 4 章 Java 操作 MongoDB 这部分内容正在整理中,通常会涵盖Java驱动的...
5. **聚合框架**:MongoDB的聚合框架用于处理数据管道,进行数据转换和分析,类似于SQL中的GROUP BY和JOIN操作。 6. **副本集**:MongoDB的副本集技术提供数据冗余和高可用性,通过在多个节点间复制数据,确保服务...
- 使用聚合框架:MongoDB Java Driver支持聚合框架,允许开发者进行复杂的分析和数据处理操作,类似于SQL的GROUP BY、JOIN等。 - 插入和查询BSON文档:通过`Document`类,可以直接操作BSON文档,将其作为键值对的...
MongoDB 的聚合框架允许你对数据进行分析和处理,类似于SQL的GROUP BY操作。它支持管道操作,可以进行数据转换、过滤、分组、排序等多种操作。 8. MapReduce 虽然MongoDB的聚合框架在很多场景下更高效,但它仍然...
MongoDB的聚合框架提供了对数据进行复杂分析的能力,类似于SQL的GROUP BY和JOIN操作。MapReduce是另一种用于处理和生成大量数据的计算模型,它可以并行处理数据,适合大数据环境下的数据分析。 七、应用程序接口API...
MongoDB的聚合框架允许开发者对数据进行处理,类似于SQL的GROUP BY、JOIN等操作,但更为灵活。 13. **GridFS**: 对于存储大文件,MongoDB提供了GridFS,将文件拆分为多个块存储在两个特定的集合中。 总结,...
1. CRUD操作:MongoDB提供了CRUD(Create、Read、Update、Delete)的基本操作,你可以使用Shell、各种语言驱动程序(如Python、Java、Node.js等)或者MongoDB的管理工具来执行这些操作。 2. 查询语言:MongoDB的查询...
"MongoDB 使用 MongoTemplate 实现统计和...在执行完毕后,我们可以从 result 中获取统计结果,例如 party支部内人员的数目。 使用 MongoTemplate 可以轻松地实现统计和分组,并且可以避免使用聚合框架时的一些问题。
6. **聚合框架**:MongoDB的聚合框架允许用户在服务器端执行复杂的数据分析和报告,类似于SQL的GROUP BY操作。 7. **GridFS**:MongoDB提供了一个名为GridFS的文件存储系统,用于存储和检索大型文件,如图片或视频...
6. **聚合框架**:MongoDB提供了聚合管道,用于对数据进行处理,类似SQL的GROUP BY和JOIN操作。聚合操作可以用于统计、分析和汇总数据。 7. **索引**:如何创建、管理和优化索引以提高查询性能。包括单字段索引、...
这在关系数据库中通常需要使用SQL的GROUP BY语句实现。 6. **索引**:为了提升查询性能,MongoDB允许为文档的特定字段创建索引。单字段、复合索引、唯一索引和地理空间索引都是可用的选择。 7. **复制集**:复制集...