我在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时,我都会得到零结果。
是否缺少一步?
答案 0 :(得分:4)
您正在传递一个joda DateTime引用,驱动程序不知道该怎么做。如果你检查日志,你可能会发现它本质上调用了一个toString()并传入它。由于字符串不是Date,比较失败。尝试传入一个java.util.Date(你可以从DateTime,iirc获得一个)。