[MONGODB] 날짜 별 자바 / MongoDB의 쿼리
MONGODB날짜 별 자바 / MongoDB의 쿼리
나는 내 컬렉션에서 java.util.Date ()와 같은 값을 저장하지만 두 가지 특정 날짜 사이의 값을 얻기 위해 쿼리 할 때, 나는 범위를 벗어나는 값을 받고 결국. 여기 내 코드는 :
인서트
BasicDBObject object = new BasicDBObject();
...
object.put("dateAdded", new java.util.Date());
collection.insert(object);
쿼리
BasicDBObject query = new BasicDBObject();
query.put("dateAdded", new BasicDBObject("$gte", fromDate));
query.put("dateAdded", new BasicDBObject("$lte", toDate));
collection.find(query).sort(new BasicDBObject("dateAdded", -1));
때를 쿼리 수요일 2011년 7월 27 동부 표준시 16시 54분 49초과 수요일 2011년 7월 27 16시 54분 49초 (동부 표준시) 사이에 (기본적으로 FROMDATE = TODATE), 내가 화 7월 같은 날짜와 객체 (26) 9시 43분 37초 동부 표준시 20시 11분를 얻을 수있는해야 확실히 할 수 없습니다. 내가 무슨 말이냐?
해결법
-
==============================
1.키 덮어 쓰기에 $ GTE 연산자를 잃고 : {TODATE $ LTE} 무슨 일을하는지 만에 쿼리입니다. 당신이 원하는 것은 :
키 덮어 쓰기에 $ GTE 연산자를 잃고 : {TODATE $ LTE} 무슨 일을하는지 만에 쿼리입니다. 당신이 원하는 것은 :
query.put("dateAdded", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());
-
==============================
2.몽고 클라이언트 3.0을 사용하여
몽고 클라이언트 3.0을 사용하여
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); Bson filter = new Document("$gte", format.parse("2015-05-01T00:00:00Z")).append("$lt", format.parse("2015-05-02T00:00:00Z")); long count = db.getCollection("colection").count(new Document("field",filter) );
-
==============================
3.당신이 봄 - 데이터 MongoDB를의 MongoTemplate를 사용하는 경우, 당신은 방법을 다음에 같은 작업을 수행 할 수 있습니다 -
당신이 봄 - 데이터 MongoDB를의 MongoTemplate를 사용하는 경우, 당신은 방법을 다음에 같은 작업을 수행 할 수 있습니다 -
public List<Link> getLinksBetweenDate(Date startDate, Date endDate) { Query query = new Query().addCriteria(Criteria.where("updatedOn").gt(startDate).lte(endDate)); return mongoTemplate.find(query, Link.class); }
-
==============================
4.단계에 따라 특정 형식과 날짜를 검색되는 몽고 3.0에서이 또한 작업
단계에 따라 특정 형식과 날짜를 검색되는 몽고 3.0에서이 또한 작업
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy.MM.dd");
먼저 특정 형식으로 날짜를 변환, 당신은 어떤 형식을 사용하고 위의 형식으로 날짜를 구문 분석하고 쿼리에 전달할 수 있습니다.
String date ="2014.01.02"; String data1 ="2014.01.10"; Date startDate = simpleDateFormat.parse(date); Date endDate = simpleDateFormat.parse(date1);
BasicDBObject query = new BasicDBObject("fieldName", new BasicDBObject("$gte",startDate).append("$lt",endDate ));
귀하의 요구 사항에 기반 그래서 당신은 BasicDBobject에 인수를 제공하여 날짜를 검색 할 수 있습니다.
from https://stackoverflow.com/questions/6840540/java-mongodb-query-by-date by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 각 그룹에 대해 마지막으로 "true"로 값을 반환 (0) | 2019.12.20 |
---|---|
[MONGODB] MongoDB를 GET _id 찾기 쿼리 문자열로 (0) | 2019.12.20 |
[MONGODB] 어떻게하여 MongoDB에서 필드를 증가 하는가? (0) | 2019.12.20 |
[MONGODB] 나는 MongoDB를 사용하여 이미지를 저장하기 위해 어떤 데이터 유형을 사용해야합니까? (0) | 2019.12.20 |
[MONGODB] MongoDB를 집계 쿼리는 $ 합계를 사용하여 적절한 금액을 반환하지 않습니다 (0) | 2019.12.20 |