Mongodb查询日期没有结果(java)

时间:2013-05-02 15:44:37

标签: java mongodb date

我的mongodb查询没有返回任何结果,我无法找到原因。

以下是我的数据的相关内容:

> db.reports.find({},{endDate:1})
{ "_id" : ObjectId("5182882ae4b032c67674c494"), "endDate" : ISODate("2013-05-02T15:37:11.032Z") }
{ "_id" : ObjectId("51828859e4b032c67674c495"), "endDate" : ISODate("2013-05-02T15:37:57.749Z") }

所以我有两个日期参赛作品2013-05-02 15:37:11-57

我想找到日期小于或等于该最新日期的所有条目,但是使用此查询我没有得到任何结果:

db.reports.find({ "endDate" : { "$lte" : { "$date" : "2013-05-02T15:37:11.032Z"}}},{endDate:1})

我使用以下方法在java中生成查询:

BasicDBObject oldReportSelector = (BasicDBObject) BasicDBObjectBuilder.start()
    .add("endDate", 
        BasicDBObjectBuilder.start().add("$lte",myDate).get())
    .get();

我在这里做错了什么?

编辑添加: myDate使用以下公式计算:

Date endDate = new Date()
Date myDate = new Date(endDate.getTime()-(interval*quantityArchivedReports));

目前interval = 86400000且quantityArchivedReports = 4

1 个答案:

答案 0 :(得分:0)

你没有在shell中获得任何东西的原因是你没有使用shell期望的日期格式。尝试将您的查询更改为:

> db.reports.find({ "endDate" : { "$lte" : new Date("2013-05-02T15:37:11.032Z")}})

{ "_id" : ObjectId("5182882ae4b032c67674c494"), "endDate" : ISODate("2013-05-02T15:37:11.032Z") }

然后,您可以使用shell来验证您的代码是否实际生成了正确的日期以取回任何数据。