Spring data mongodb 취 합 조회 (aggregation) 의 bucket
홈 페이지 네 이 티 브 코드:
db.artwork.aggregate( [ { $bucket: { groupBy: "$price", boundaries: [ 0, 200, 400 ], default: "Other", output: { "count": { $sum: 1 }, "titles" : { $push: "$title" } } } }
] )
필드 설명:
groupby: 그룹의 필드 boundaries: 그룹의 범위 default: 마지막 그룹의 이름
output: 출력의 다른 내용
Spring data mongodb:
실체 클래스: role
@Document(collection = "role")
@TypeAlias("role")
public class Role extends Contact {
public Role(String name, int age) {
this.name = name;
this.age = age;
}
private String name;
private int age;
데이터 삽입:
mongoTemplate.save(new Role("zhang1",5));
mongoTemplate.save(new Role("zhang2",6));
mongoTemplate.save(new Role("zhang3",12));
mongoTemplate.save(new Role("zhang4",14));
mongoTemplate.save(new Role("zhang5",23));
테스트 bucket:
TypedAggregation agg = Aggregation.newAggregation(Role.class,Aggregation.bucket("age")
.withBoundaries(0,10,20)
.withDefaultBucket("other1")
.andOutput("name").count().as("count")
.andOutput("age").sum().as("sum")
.andOutput("name").push().as("names"));
AggregationResults result = mongoTemplate.aggregate(agg,Document.class);
result.getMappedResults().forEach(document -> System.out.println(document));
결과:
Document{{_id=0, count=2, sum=11, names=[zhang1, zhang2]}}
Document{{_id=10, count=2, sum=26, names=[zhang3, zhang4]}}
Document{{_id=other1, count=1, sum=23, names=[zhang5]}}
주의:
1 출력 count 시 andOutput ("name") 의 name 은 필드 와 무관 하기 때문에 임의로 작성 할 수 있 습 니 다.
2 push 는 각 그룹의 한 필드 (name) 의 모든 값 을 출력 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.