开发者社区> 问答> 正文

无法在Mongodb中找到与java中的确切日期匹配的文档

声明:我正在尝试使用java从MongoDB集合(Emp)获取文档。

条件:与人的DOB(出生日期)匹配的地方。

问题:然而,它永远不会返回记录。

但它适用于其他领域,如EmpID或EmpName等。我的收藏文件看起来像这样,

{ "_id" : ObjectId("5d4d9059f0b31921a4916a0c"), "EmpID" : "1001", "EmpName" : "John", "Sal" : 30000.0, "DOB" : ISODate("1989-06-09T18:30:00.000+0000"), "Age" : 31.0 } 请找到我尝试过的以下java代码,

BasicDBObject dbo = new BasicDBObject(); dbo.append("DOB", new BasicDBObject("$eq","1989-06-10T00:00:00.000"));

FindIterable doc = coll.find(dbo);

for (Document dox : doc) {
System.out.println(dox.toJson()); }

展开
收起
小六码奴 2019-08-17 17:49:41 2367 0
1 条回答
写回答
取消 提交回答
  • 对于ISODate,需要传入Date对象BasicDBObject,而不是String还必须提供时区:

    dbo.append("DOB", new BasicDBObject("$eq",new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXX").parse("1989-06-10T00:00:00.000+0000");)); 对于出生日期,最好同时使用$gte和$lt比较运算符,如下:

    Date dayStart = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXX").parse("1989-06-10T00:00:00.000+0000"; Date dayEnd = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXX").parse("1989-06-11T00:00:00.000+0000";

    BasicDBObject query = new BasicDBObject("Date", new BasicDBObject("$gt", dayStart)).append("$lte", dayEnd)));

    2019-08-17 17:50:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
MongoDB多数据中心的方案选型之路 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载

相关镜像