springboot mongo聚合操作

描述

直接写mongo的sql很简单。但是如果遇到聚合操作就不一定了。
我需要将聚合的两个字段相加。
本来springboot支持直接写mongo命令的。后来不知道,为什么不能用了。

解决办法

参考

MongoCollection<Document> collection = database.getCollection("myCollection");

AggregateIterable<Document> output = collection.aggregate(Arrays.asList(
        new Document("$unwind", "$views"),
        new Document("$match", new Document("views.isActive", true)),
        new Document("$sort", new Document("views.date", 1)),
        new Document("$limit", 200),
        new Document("$project", new Document("_id", 0)
                    .append("url", "$views.url")
                    .append("date", "$views.date"))
        ));

// Print for demo
for (Document dbObject : output)
{
    System.out.println(dbObject);
}

这种形式跟 mongo的语法最接近了。

    db.UserInfo.aggregate([
    {
        $match:{statisticsTime:{$gt:1580604627000,$lt:4110679570000},
            userCode:"ID89777666"
        }
    }
    ,
    {
        $group:{
            _id:"$childernode",
            Duration:{$sum:{$add:["$fireDuration","$outDuration"]}},
            Times:{$sum:{$add:["$fireTimes","$outTimes"]}}
        }
    }]).skip(3).limit(5)

遇到问题

$project 与 $group 有冲突

你只能用一个。

总结

没了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot中集成MongoDB的管道聚合可以通过使用聚合管道(Aggregation Pipeline)来实现。聚合管道是MongoDB提供的一种强大的数据处理工具,可以对数据进行多个阶段的处理和转换。 在SpringBoot项目中使用聚合管道,首先需要引入MongoDB的依赖,并配置MongoDB的连接信息。在yml配置文件中,可以使用以下格式配置MongoDB的URI: ``` spring: data: mongodb: uri: mongodb://用户名:密码@127.0.0.1:port/库名?authSource=admin&authMechanism=SCRAM-SHA-1 ``` 其中,用户名、密码、IP地址、端口号、库名等信息需要根据实际情况进行替换。 接下来,在服务层的代码中,可以使用MongoTemplate或MongoOperations来执行聚合管道操作聚合管道可以包含多个阶段,每个阶段都是一个操作,可以对数据进行筛选、排序、分组、计算操作。 例如,可以使用聚合管道来实现对某个集合中的数据进行分组统计: ```java Aggregation aggregation = Aggregation.newAggregation( Aggregation.group("字段名").count().as("统计结果") ); AggregationResults<统计结果类型> results = mongoTemplate.aggregate(aggregation, "集合名", 统计结果类型.class); List<统计结果类型> resultList = results.getMappedResults(); ``` 其中,字段名是需要进行分组统计的字段,统计结果是统计的结果字段名。集合名是需要进行聚合操作的集合名称,统计结果类型是自定义的结果类型。 通过以上方式,可以在SpringBoot项目中使用MongoDB的管道聚合功能进行数据统计和处理。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [SpringBoot集成MongoDB(2)|(中级-数据统计、集合、管道处理)](https://blog.csdn.net/Oaklkm/article/details/125716072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值