Java中的MongoDB日期搜索返回零结果
我有一个GridFS中的文件列表,我试图按日期查询这些文件。示例文档如下所示:Java中的MongoDB日期搜索返回零结果,java,mongodb,jodatime,Java,Mongodb,Jodatime,我有一个GridFS中的文件列表,我试图按日期查询这些文件。示例文档如下所示: { "_id" : ObjectId("52e431d3e84f6fa18c53c808"), "chunkSize" : NumberLong(262144), "length" : NumberLong(13021), "md5" : "0eb01f0d266f4bf4764d4ffc7e70a7ed", "filename" : "120_1390686674383",
{
"_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);
我正在尝试通过执行以下操作,根据时间戳获取“最近的”:
{
"_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时,我得到的结果都是零
是否缺少一个步骤?您正在传递一个joda DateTime引用,而驱动程序不知道如何做。如果您检查日志,您可能会发现它实际上调用了一个toString()并将其传入。因为字符串不是日期,所以比较失败。尝试只传入一个java.util.Date(您可以从DateTime,iirc获得一个)。您是对的,dt对象有一个正常工作的to-DateTime。