Spring MongoDB 쿼리 정렬
저는 mongodb에 대해 꽤 생소하고, 주문된 mongodb 쿼리를 만들려고 노력하는 중입니다.그러나 스프링 데이터 mongodb의 정렬 방법은 사용되지 않습니다.그래서 제가.org.springframework.data.domain.Sort
:
Query query = new Query();
query.with(new Sort(Sort.Direction.ASC,"pdate"));
return mongoTemplate.find(query, Product.class);
저는 이 코드 블록을 사용했습니다.하지만 그것은 데이터를 정렬하지 않습니다.그래서 당신은 이 연습에 유용한 방법을 사용하는 것을 선호할 수 있습니까?
이러한 방식으로 정렬을 정의하여 대소문자를 무시할 수 있습니다.
new Sort(new Order(Direction.ASC, FIELD_NAME).ignoreCase()
새로운 답변 - Spring Data Moore
사용하다Sort.by
Query().addCriteria(Criteria.where("field").`is`(value)).with(Sort.by(Sort.Direction.DESC, "sortField"))
리포지토리에 사용자 지정 쿼리를 작성한 경우 호출 중 정렬을 수행할 수 있습니다.맘에 들다,
저장소
@Query("{ 'id' : ?0}")
List<Student> findStudent(String id, Sort sort);
호출 중
Sort sort = new Sort(Sort.Direction.ASC, "date")
List<Student> students = studentRepo.findStudent(1, sort);
이것이 도움이 되길 바랍니다! :)
필드 값을 내림차순으로 정렬하는 방법입니다.내 필드 값은 "공천"입니다.타임스탬프"이지만, 예를 들어 "firstName"일 수 있습니다.
List<Movie> result = myMovieRepository.findAll(Sort.by(Sort.Direction.DESC, "nominationTimestamp"));
myMovieRespository는 MongoRespository를 확장하는 클래스의 인스턴스입니다. <>
query.with(new Sort(Sort.Direction.ASC, "timestamp"));
정렬 매개 변수를 필드로 기억합니다. 오름차순 또는 내림차순 정렬을 각각 지정하려면 1 또는 -1.
집계를 사용하여 데이터를 정렬할 수 있습니다.집계 쿼리에 일치 및 그룹화 기준을 사용하고 필드를 풀어야 합니다.
AggregationOperation match = Aggregation.match(matching criteria);
AggregationOperation group = Aggregation.group("fieldname");
AggregationOperation sort = Aggregation.sort(Sort.Direction.ASC, "fieldname");
Aggregation aggregation = Aggregation.newAggregation(Aggregation.unwind("fieldname"),match,group,sort);
이것은 나에게 효과가 있었습니다.
query.with(Sort.by(Sort.Order.asc("pdate")));
spring-data-commons
버전 2.3.5
그Sort
생성자가 비공개이므로 다음을 수행합니다.
Query query = new Query();
query.with(Sort.by(Sort.Direction.ASC,"pdate"));
return mongoTemplate.find(query, Product.class);
리포지토리에서 집계를 사용할 수 있습니다.
저장소
@Aggregation(pipeline ={
"{$match: { id : ?0 }",
"{$sort: {date: 1}}",
"{$limit: 1}"
}
Optional<Student> findStudent(String id);
결과 집합을 정렬하고 제한하기 위해 스프링 데이터에서 mongoTemplate와 함께 TypeedAggregation을 사용하고 있습니다.
import static org.springframework.data.mongodb.core.aggregation.Aggregation.limit;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.match;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.project;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort;
import org.springframework.data.domain.Sort.Direction;
TypedAggregation<ObjectType> agg = newAggregation(ObjectType.class,
match(matching Criteria),
project("_id", ...),
sort(Direction.ASC, "_id"),
limit(pageSize));
List<RESULT_OBJECT> mappedResult = mongoTemplate.aggregate(agg, COLLECTION_NAME, RESULT_OBJECT.class).getMappedResults();
언급URL : https://stackoverflow.com/questions/18521009/spring-mongodb-query-sorting
'programing' 카테고리의 다른 글
SELECT*가 유해한 이유는 무엇입니까? (0) | 2023.05.18 |
---|---|
메이븐 인 이클립스: 단계별 설치 (0) | 2023.05.18 |
iPhone 응용 프로그램에서 메일을 보내는 방법 (0) | 2023.05.18 |
설정이 다른 두 파일에 로깅 (0) | 2023.05.18 |
Bash 명령줄 및 입력 제한 (0) | 2023.05.18 |