在 Spring Boot Mongodb 中使用聚合框架按计数查找组
Posted
技术标签:
【中文标题】在 Spring Boot Mongodb 中使用聚合框架按计数查找组【英文标题】:In Spring boot Mongodb find group by count by using Aggregation framework 【发布时间】:2019-02-01 15:05:14 【问题描述】:您好,我尝试在 Spring Boot 中使用 mongodb 执行 rest api,以通过计数输入数据的样子来查找组。请分享任何逻辑、代码、示例链接。 伙计们,我期待春季启动逻辑。 mongodb聚合框架如何集成。
"_id" : "PRODUCT_01",
"productname" : "product1",
"value" : "codesoft"
,
"_id" : "PRODUCT_01",
"productname" : "product2",
"value" : "codesoft"
,
"_id" : "PRODUCT_01",
"productname" : "product1",
"value" : "codesoft"
预期输出 产品1:2, 产品2:1 任何帮助表示赞赏。
【问题讨论】:
您自己尝试过吗?你的代码在哪里? MongoDB SELECT COUNT GROUP BY的可能重复 阿米特我已经创建,但这不是正确的解决方案,这就是我没有分享的原因.. 【参考方案1】:试试这个
db.testColln.aggregate(
$group : _id : "$productname", total : $sum : 1
);
用于 Spring Boot
Aggregation agg = newAggregation(
group("productname").count().as("total")
project("productname").and("total"),
);
AggregationResults<Product> groupResults
= mongoTemplate.aggregate(agg, Product.class,Result.class);
List<Result> result = groupResults.getMappedResults();
public class Result
private String productname;
private long total;
【讨论】:
您能解释一下您的解决方案吗?哪些部分是相关的,为什么您认为它们可以解决问题? gaurav thanx 为此,但我需要 Spring Boot mongo 聚合逻辑而不是 mongo 查询 .. mongo 我知道。【参考方案2】:@GetMapping("/group")
public List<ProductCount> groupByName()
// grouping by prductName
GroupOperation groupOperation =
Aggregation.group("productName").count().as("count");
// projection operation
ProjectionOperation projectionOperation =
Aggregation.project("count").and("productName").previousOperation();
// sorting in ascending
SortOperation sortOperation =
Aggregation.sort(Sort.by(Sort.Direction.ASC, "count"));
// aggregating all 3 operations using newAggregation() function
Aggregation aggregation =
Aggregation.newAggregation(groupOperation,projectionOperation
,sortOperation);
// putting in a list
// "products" is collection name
AggregationResults<ProductCount> result =
mongotemplate.aggregate(aggregation, "products",
ProductCount.class);
return result.getMappedResults();
$ 在模型包中创建 ProductCount 类
public class ProductCount
private String productName;
private int count;
#getters
#setters
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于在 Spring Boot Mongodb 中使用聚合框架按计数查找组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot 在 Mongodb 中保存重复项?
基于spring boot的项目中的spring data mongodb配置
使用环境变量在 Spring Boot 中配置 MongoDB
如何使`org.mongodb.driver.cluster`在spring boot中使用嵌入式mongodb?