java - Java 中的 MongoDB 日期搜索返回零结果

标签 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);

如果我简单地对 fileStore 进行排序,我会得到大量记录,并且我可以通过游标进行枚举。但是,每当我尝试使用 $gte 或 $lte 时,我都会得到零结果。

是否缺少步骤?

最佳答案

您正在传递驱动程序不知道如何执行的 joda DateTime 引用。如果您检查日志,您可能会发现它实质上是在其上调用 toString() 并将其传入。由于字符串不是日期,因此比较失败。尝试只传递一个 java.util.Date(您可以从 DateTime、iirc 获得一个)。

关于java - Java 中的 MongoDB 日期搜索返回零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23302221/

相关文章:

php - 在 Ubuntu 18.04 上安装 Mongodb PHP 驱动程序

java - Jollyday 检查复活节

java - JDBI 如何在防止 SQL 注入(inject)的同时动态创建 WHERE 子句?

java - 为什么这会导致 "The field name is ambiguous"错误?

node.js - 在 Node js 中处理多人游戏的超时。

java - Joda-Time 日期时间 欧洲/柏林夏令时

java - Joda time - 格式不同时解析

java - Android/java 公共(public)类中的 if else 语句

java - 尝试向另一个类中的 GUI 显示 HashMap 值

mongodb - mongodb 是构建健康相关 Web 应用程序的正确选择吗?