스프링 데이터 MongoDB 날짜 간격
저는 스프링 데이터 mongodb를 사용합니다.
저는 두 날짜 사이의 기록을 원합니다.다음 MongoDB 쿼리가 작동합니다.
db.posts.find({startDate: {$gte: start, $lt: end}});
시도한 Spring 데이터 쿼리 개체 코드 변환이 작동하지 않습니다.
Query query = new Query();
query.addCriteria(Criteria.where("startDate").gte(startDate)
.and("startDate").lt(endDate));
내가 필요로 하는 Mongo 쿼리를 빌드하기 위한 올바른 메서드 호출 순서는 무엇입니까?
기준에 '및("시작일")' 부분을 포함하지 마십시오.
다음 대신:
query.addCriteria(Criteria.where("startDate").gte(startDate).and("startDate").lt(endDate));
다음을 사용해야 합니다.
query.addCriteria(Criteria.where("startDate").gte(startDate).lt(endDate));
및 ("시작일")" 부분을 포함하면 Mongose는 동일한 속성에 있는 두 개의 다른 항목으로 표시됩니다.
쿼리 주석을 추가할 수도 있습니다.
@Query("{'date' : { $gte: ?0, $lte: ?1 } }")
public List<AnyYourObj> getObjectByDate(Date from, Date to);
또는 적절한 스프링 데이터 방법 서명:
public List<AnyYourObj> findByDateBetween(Date from, Date to);
이 두 가지 접근 방식 모두 동일한 결과를 제공합니다.https://www.baeldung.com/queries-in-spring-data-mongodb 및 https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/ 에서 더 많은 정보를 읽을 수 있습니다.
Query query = new Query(
Criteria.where("ip").is(ip)
.andOperator(
Criteria.where("createdDate").lt(endDate),
Criteria.where("createdDate").gte(startDate)
)
);
필드에서 날짜를 찾아야 했습니다.publishedDate
그리고 내가 어떻게 했는지는 다음과 같습니다.
Criteria publishedDateCriteria = Criteria
.where("publishedDateObject").gte(psDate)
.lte(peDate);
Query query = new Query(publishedDateCriteria);
mongoTemplate.find(query,
MyDocumentObject.class));
이렇게 했어요.
public interface PolicyRepository extends MongoRepository<Policy, String> {
@Query("{'lastDate':{$gt:?0,$lt:?1}}")
public List<Policy> findAllPolicies(Date today,Date somedate);
}
이것은 Java 드라이버 버전 2.7.2에서 작동합니다.
DBCollection coll = db.getCollection("posts");
BasicDBObject date = new BasicDBObject();
date.append("$gte", new Date(startDate));
date.append("$lte", new Date(endDate));
DBObject query = new BasicDBObject();
query.put("date", date);
DBCursor cursor = coll.find(query);
또한 gte 파라미터와 lte 파라미터 모두에 대해 "startDate"가 기록되어 있습니다.
작동합니다. 그는 샘플 코드입니다.
Criteria criteria = Criteria.where("pt").gte(startDate)
.andOperator(Criteria.where("pt").lt(endDate));
public interface MyRepository extends MongoRepository<MyObject, MyObjectId> {
List<MyObject> findByMydatefieldBetween(DateTime startDate, DateTime endDate);
}
if (metaData.getToValue() == null){
dynamicCriteria = Criteria.where("metaData.key").is(metaData.getKey()).andOperator(Criteria.where("metaData.value").is(metaData.getFromValue()));
}else {
dynamicCriteria = Criteria.where("metaData.key").is(metaData.getKey()).orOperator(Criteria.where("metaData.value").gte(metaData.getFromValue()).lt(metaData.getToValue()));
}
MongoRepository Query 메서드를 다음과 같이 사용합니다.
List<T> findByStartDateBetween(Range<Integer> dataRange);
상세 범위 설정에는 범위를 사용합니다.
아래 쿼리를 사용해 볼 수 있습니까?이것은 당신의 경우에 효과가 있을 것입니다.
Query query = new Query(
Criteria.andOperator(
Criteria.where("startDate").gte(startDate),
Criteria.where("startDate").lt(endDate)
)
);
기준(복합 쿼리)을 사용하여 스프링 부트몽고의 날짜별 열 검색[기준을 이용한 spring boot mongodb의 date 열로 검색][1]
언급URL : https://stackoverflow.com/questions/10311061/spring-data-mongodb-date-between
'programing' 카테고리의 다른 글
파워셸의 열에서 개별 항목 선택 (0) | 2023.08.26 |
---|---|
미끄러운 회전목마 - 슬라이드의 높이를 같게 합니다. (0) | 2023.08.26 |
pytest -n auto + mariadb + m1 mac 너무 느림 (0) | 2023.08.26 |
jQuery DataTables의 특정 열에 대해 정렬 사용 안 함 (0) | 2023.08.26 |
여러 문자열 매개 변수를 PowerShell 스크립트에 전달하는 방법은 무엇입니까? (0) | 2023.08.26 |