Mongodb复杂聚合统计查询与java示例

mongodb复杂聚合统计

db.test_domo.aggregate([
 {
    $match:{
		  createTime:{$gte:"2020-02-20"}
		}
 },
  {
    $group: {
        _id: {
            userId: "$userId",
            dateTime: "$dateTime",
            code: "$code"
        },
        count_01: {
            "$sum": "$count_01"
        },
		count_02: {
            "$sum": "$count_02"
        }
    }
}, {
    $project: {
        _id: 0,
        userId: "$_id.userId",
        dateTime: "$_id.dateTime",
		code: "$_id.code",
		count_01: 1,
		count_02: 1
    }
},{
	$sort:{
	   code: -1,
       dateTime: -1
	}
}])

java示例(示例参数与上述语句参数不同,但是实现类似)

List<BasicDBObject> basicDBObjectList = new ArrayList<>();

BasicDBObject $match = new BasicDBObject();
$match.put("$match", new BasicDBObject().append("hourTime", new BasicDBObject().append("$gte", startTime).append("$lte",endTime)));

basicDBObjectList.add($match);

BasicDBObject $group = new BasicDBObject();
$group.put("$group",  new BasicDBObject().append("_id", "$hourTime").append("num_tutorial", new BasicDBObject("$sum", "$opTotal")));
basicDBObjectList.add($group);

BasicDBObject $project = new BasicDBObject();
$project.put("$project",  new BasicDBObject().append("_id", false).append("hourTime", "$_id").append("opTotal", "$num_tutorial"));


basicDBObjectList.add($project);

BasicDBObject $sort = new BasicDBObject();
$sort.put("$sort", new BasicDBObject().append("hourTime", 1));
basicDBObjectList.add($sort);

AggregateIterable<Document> documentAggregateIterable = mongoTemplate.getCollection(COLLECTION_NAME).aggregate(basicDBObjectList);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值