我尝试在MongoDb上获取一个带有日期字段的日志,名为" fecha"。
在Java中执行我的代码后,我得到了下一个查询:
{ "fecha" : { "$gt" : { "$date" : "2015-02-03T01:00:00.000Z"} , "$lt" : { "$date" : "2015-11-22T01:00:00.000Z"}}}
但我没有得到任何结果。这些是数据的一些样本:
{ "fecha" : ISODate("2015-11-17T07:47:39.709Z") }
{ "fecha" : ISODate("2015-11-17T07:47:42.760Z") }
{ "fecha" : ISODate("2015-11-17T07:47:45.069Z") }
{ "fecha" : ISODate("2015-11-17T07:47:46.874Z") }
{ "fecha" : ISODate("2015-11-17T07:47:47.831Z") }
{ "fecha" : ISODate("2015-11-17T07:47:49.838Z") }
{ "fecha" : ISODate("2015-11-17T07:47:50.867Z") }
{ "fecha" : ISODate("2015-11-17T07:47:53.534Z") }
{ "fecha" : ISODate("2015-11-17T07:47:55.348Z") }
{ "fecha" : ISODate("2015-11-17T07:47:59.271Z") }
{ "fecha" : ISODate("2015-11-17T07:48:06.782Z") }
我的Java代码是下一个:
Date dateI = Date.from(Instant.ofEpochMilli(0));
Date dateF = Date.from(Instant.now());
if(!fechaInicial.isEmpty()){
dateI = Date.from(LocalDateTime.parse(fechaInicial).toInstant(ZoneOffset.UTC));
}
if(!fechaFinal.isEmpty()){
dateF = Date.from(LocalDateTime.parse(fechaFinal).toInstant(ZoneOffset.UTC));
}
builder.put("fecha").greaterThan(dateI).lessThan(dateF);
List<DBObject> dbo = bitacoraEjercicios.find(builder.get()).toArray();
return dbo.toString();
感谢。
答案 0 :(得分:0)
创建表示日期范围的日期对象,MongoDB会将它们转换为ISODate:
var start = new Date(2015, 1, 3, 1, 0),
end = new Date(2015, 10, 22, 1, 0);
db.collection.find({ "fecha": { "$gt": start, "$lt": end }})
答案 1 :(得分:0)
我猜你的构建器有问题,可能会产生一些不正确的查询。 mongo查询不支持$data
。请参阅此Date query with ISODate in mongodb doesn't seem to work