我在 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);
如果我简单地对 fileStore 进行排序,我会得到大量记录,并且我可以通过游标进行枚举。但是,每当我尝试使用 $gte 或 $lte 时,我都会得到零结果。
是否缺少步骤?
最佳答案
您正在传递驱动程序不知道如何执行的 joda DateTime 引用。如果您检查日志,您可能会发现它实质上是在其上调用 toString() 并将其传入。由于字符串不是日期,因此比较失败。尝试只传递一个 java.util.Date(您可以从 DateTime、iirc 获得一个)。
关于java - Java 中的 MongoDB 日期搜索返回零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302221/