Spring数据mongodb搜索ISO日期

我正在尝试使用查询搜索出生日期

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

并且spring数据mongodb生成以下查询:

MongoTemplate:使用查询查找:

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

fields:类为null:类com.temp.model.User in collection:user

但我没有得到任何结果。

我在mongodb的dob字段:

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

我如何以ISODate格式搜索dob

此代码应该可以满足您的需求:

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

我的测试是使用以下代码,它可以正常工作:

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

查询将从Spring数据mongodb0执行完美

{“dob”:{“$ lte”:{“$ date”:“2015-05-16T07:55:23.257Z”}}}。

但它不会从mongo CLI执行。

查询在cli上执行。

{DOB:ISODate( “2015-05-15T07:55:23.257Z”)}

谢谢

对于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-Md 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; } } }