programing

Spring MongoDB 쿼리 정렬

minimums 2023. 5. 18. 20:53
반응형

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

반응형