2015-05-16 4 views
4

Я пытаюсь найти дату рождения с помощью QuerySpring поиск MongoDB данных по дате ISO

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

и пружинных данных MongoDB генерировать ниже запрос:

MongoTemplate: поиск с помощью запроса:

{ "dob" : { "$lte" : { "$date" : "2015-05-16T07:55:23.257Z"}}} 

полей: нуль для класса: класс com.temp.model.User в коллекции: пользователя

Но я не получил никакого результата.

Мой д.р. поле в MongoDB:

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

Как я могу найти д.р. в формате ISODate?

ответ

5

Этот код должен работать нормально, что вам нужно:

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

Запрос будет выполнять идеальный от Spring mongodb0 данных

{"dob": {"$ lte": {"$ date": "2015-05-16T07: 55: 23.257Z"}}}.

Но это не будет выполнено из mongo CLI.

Запрос на выполнение на cli.

{д.р.: ISODate ("2015-05-15T07: 55: 23.257Z")}

Благодаря

+0

Прекрасно работайте из Spring mongo Аннотации к запросу. –

1

Для 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; 
     } 
    } 



} 
+0

Это не касается T и Z в формате даты :( –

Смежные вопросы