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


本文整理自网络,侵删。

一、BasicDBObject

整个聚合查询是统计用户的各种状态下的用户数量为场景:

1.筛选条件:

date为查询日期:

BasicDBObject Query = new BasicDBObject(); 
Query.put("time",new BasicDBObject("$gte", date + " 00:00:00")
 .append("$lte", date + " 23:59:59"));

如果有多个条件:直接加Query.put("status", 0);

如果有OR筛选:

BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("status", new BasicDBObject("$exists",false)));
values.add(new BasicDBObject("status", 0));
Query.put("$or", values);

其中 new BasicDBObject("$exists",false)) 就是“status”不存在(mongodb文档可不等于实体的字段)

2.拼接match

DBObject Match = new BasicDBObject("$match", Query);

将上一步的Query放入macth筛选中

3.拼接分组条件

此步相当于SQL的Group By

BasicDBObject GroupBy = new BasicDBObject();// 分组条件
GroupBy.put("userId", "$userId");//根据用户ID来分组

同第一步的筛选一样,如果有多个分组可直接添加在后面:GroupBy.put("status", "$status");

4.分组后查询

首先把分组拼接上:

DBObject Select = new BasicDBObject("_id", GroupBy);

如果我们要对分组后的数据进行操作:(这里是用户的统计数量)

Select.put("count", new BasicDBObject("$sum", 1));

5.拼接$group

DBObject Group = new BasicDBObject("$group", Select);

至此。我们拼接,mongodb的语句到此结束

下面我们开始查询操作:

import com.mongodb.AggregationOutput;
import org.springframework.data.mongodb.core.MongoTemplate;
AggregationOutput Output = mongoTemplate.getCollection("这里是mongodb的数据表名")
  .aggregate(Match, Group);

读取查询结果:

Iterable<DBObject> map = Output.results();
//遍历map
for (DBObject dbObject : map) {
  //这里读取到的map为{"_id":{"userId":1,"status"0}}...   
  Map<String, Object> resultMap = (Map<String, Object>) dbObject.get("_id");

  //这里截取掉.0   
  Integer userId = Integer.parseInt(CommUtil.toString(ausgMap.get("userId")).replace(".0",""));

  //在这里我们就可以对我们的数据进行操作了;  
  Integer count = Integer.parseInt(CommUtil.toString(dbObject.get("count")));
     
}

二、DBObject

不多说,如果大家觉得第一种方法特别长篇大论,那么下面我给大家带来一种代码更简洁的聚合查询:

直接上代码吧。

1.注意导入的包:

import com.mongodb.DBObject; import com.mongodb.util.JSON;

2.$macth:

(beginDay-查询开始日期;endDay-查询结束日期)

DBObject match = (DBObject) JSON.parse("{$match:{'status':'1','time':
  {$gte:'"+beginDay+"',$lte:'"+endDay+"'}}}");

3.$group:

阅读剩余部分

相关阅读 >>

mongodb操作类封装实例代码

mongodb 数据类型(null字符串数字日期内嵌文档数组等)

win7平台快速安装、启动mongodb的方法

mongodb实现问卷考试设计功能

python 操作 mongodb 讲解详细

mongodb复制集原理详解

mongodb常用数据库命令大全

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

mongodb简介 mongodb五大特色

mongodb中的加减乘除运算详解

更多相关阅读请进入《mongodb》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...