Spring 数据 mongodb 搜索 ISO 日期
Spring data mongodb search for ISO date
我正在尝试使用查询来搜索出生日期
criteria = Criteria.where("dob").lte(new DateTime().toDate());
和 spring 数据 mongodb 生成以下查询:
MongoTemplate: find using query:
{ "dob" : { "$lte" : { "$date" : "2015-05-16T07:55:23.257Z"}}}
fields: null for class: class 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<User> 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 将字符串转换为日期对象
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;
}
}
}
val query = Query()
query.addCriteria(
Criteria("info.dob").gte(dob.atStartOfDay())
我正在尝试使用查询来搜索出生日期
criteria = Criteria.where("dob").lte(new DateTime().toDate());
和 spring 数据 mongodb 生成以下查询:
MongoTemplate: find using query:
{ "dob" : { "$lte" : { "$date" : "2015-05-16T07:55:23.257Z"}}}
fields: null for class: class 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<User> 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 将字符串转换为日期对象
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;
}
}
}
val query = Query()
query.addCriteria(
Criteria("info.dob").gte(dob.atStartOfDay())