복붙노트

[SPRING] ISO 데이터에 대한 스프링 데이터 mongodb 검색

SPRING

ISO 데이터에 대한 스프링 데이터 mongodb 검색

나는 쿼리를 사용하여 생년월일을 검색하려고합니다.

criteria = Criteria.where("dob").lte(new DateTime().toDate());

그리고 봄 데이터 mongodb 아래의 쿼리를 생성합니다 :

그러나 나는 결과를 얻지 못했습니다.

mongodb의 내 dob 필드 :

{"dob" : ISODate("1991-01-23T00:00:00Z")}

어떻게 dood를 ISODate 형식으로 검색 할 수 있습니까?

해결법

  1. ==============================

    1.이 코드는 필요한 경우 잘 작동합니다.

    이 코드는 필요한 경우 잘 작동합니다.

    criteria = Criteria.where("dob").lte(new java.util.Date());
    

    내 테스트는 잘 작동하는 다음 코드를 사용합니다.

    Lis<User> users = mongoOps.find(query(where("isActive").is(true).and("CreatedDate").lte(new java.util.Date())), User.class);
    
  2. ==============================

    2.쿼리는 Spring 데이터 mongodb0에서 완벽하게 실행됩니다.

    쿼리는 Spring 데이터 mongodb0에서 완벽하게 실행됩니다.

    하지만 mongo CLI에서는 실행되지 않습니다.

    cli에서 실행할 쿼리.

    감사

  3. ==============================

    3.IDE 용 ISODate ()는 SPRING DAO 용 문자열을 Date 객체로 변환합니다.

    IDE 용 ISODate ()는 SPRING DAO 용 문자열을 Date 객체로 변환합니다.

    query.addCriteria(Criteria.where("created").ne(null).andOperator(
                    Criteria.where("created").gte(DateUtils.getDate("2016-04-14 00:00:00", DateUtils.DB_FORMAT_DATETIME)),
                    Criteria.where("created").lte(DateUtils.getDate("2016-04-14 23:59:59", DateUtils.DB_FORMAT_DATETIME))
                ));
    
    
    public final class DateUtils {    
    
        public static final String DB_FORMAT_DATETIME = "yyyy-M-d HH:mm:ss";        
    
        private DateUtils() {
            // not publicly instantiable
        }       
    
        public static Date getDate(String dateStr, String format) {
            final DateFormat formatter = new SimpleDateFormat(format);
            try {
                return formatter.parse(dateStr);
            } catch (ParseException e) {                
                return null;
            }
        }
    
    
    
    } 
    
  4. from https://stackoverflow.com/questions/30273355/spring-data-mongodb-search-for-iso-date by cc-by-sa and MIT license