MongoDB日期搜索在Java中返回零结果

时间:2014-04-25 20:15:34

标签: java mongodb jodatime

我在GridFS中有一个文件列表,我试图按日期查询。示例文档如下所示:

{
    "_id" : ObjectId("52e431d3e84f6fa18c53c808"),
    "chunkSize" : NumberLong(262144),
    "length" : NumberLong(13021),
    "md5" : "0eb01f0d266f4bf4764d4ffc7e70a7ed",
    "filename" : "120_1390686674383",
    "contentType" : null,
    "uploadDate" : ISODate("2014-01-25T21:51:15.049Z"),
    "aliases" : null
}

我试图通过执行以下操作来根据时间戳获取“最新”:

DateTime dt = new DateTime(queryObj.getTime()); //org.joda.DateTime
BasicDBObject sort = new BasicDBObject();
sort.put("uploadDate", -1);

BasicDBObject query = new BasicDBObject();
query.put("uploadDate", new BasicDBObject("$gte", dt));

DBCursor cursor = fileStore.getFileList(query, sort);

如果我只是对文件存储进行排序,我会收到大量记录,我可以通过光标进行枚举。但是,每当我尝试使用$ gte或$ lte时,我都会得到零结果。

是否缺少一步?

1 个答案:

答案 0 :(得分:4)

您正在传递一个joda DateTime引用,驱动程序不知道该怎么做。如果你检查日志,你可能会发现它本质上调用了一个toString()并传入它。由于字符串不是Date,比较失败。尝试传入一个java.util.Date(你可以从DateTime,iirc获得一个)。