Java 如果date添加了一些偏移时间,Mongo DB无法按日期查找文档

Java 如果date添加了一些偏移时间,Mongo DB无法按日期查找文档,java,mongodb,Java,Mongodb,MongoDB以GMT存储日期。我想要以IST存储日期。所以,在将文档保存到MongoDB之前,我从java驱动程序向当前日期添加了1980000。现在我需要查询MongoDb获取当前日期之前的所有文档 在爪哇我做到了 dbCollection.find(new BasicDBObject("LastUpdatedOn",new BasicDBObject("$lte",new Date(new Date().getTime()+1980000))) 但是它找不到我的文档。 虽然当我执行db.

MongoDB以GMT存储日期。我想要以IST存储日期。所以,在将文档保存到MongoDB之前,我从java驱动程序向当前日期添加了1980000。现在我需要查询MongoDb获取当前日期之前的所有文档

在爪哇我做到了

dbCollection.find(new BasicDBObject("LastUpdatedOn",new BasicDBObject("$lte",new Date(new Date().getTime()+1980000)))
但是它找不到我的文档。 虽然当我执行
db.collectionname.distinct(“LastUpdatedOn”)
时,在shell提示下,它给了我几个实际低于当前时间戳的值

java驱动程序试图在mongodb上触发的查询是

{"LastUpdatedOn" : { "$lte" : { "$date" : "2015-03-22T04:15:13.676Z"}}
我对MongoShell的独特查询是返回几个带有时间戳的文档

    ISODate("2015-02-03T03:39:50.824Z"),
    ISODate("2015-02-03T03:39:56.023Z"),
    ISODate("2015-02-03T03:39:56.434Z"),
    ISODate("2015-02-03T03:39:57.003Z"),
    ISODate("2015-02-03T03:39:57.230Z")

请解释为什么Java无法在Mongo 2.4.6版上找到我的文档。MongoDB将日期存储为时间戳(unix时间),即自1970年1月1日GMT起的秒数。这是一个参考值,因此不受任何时区的限制。你看到的是时间值的表示

基本上,2015年3月22日10:26+01:00(这是我的当前时间)与2015年3月22日09:26+00:00相同。所有这些时间表示都导致相同的时间戳值1427016360000。时区仅在将时间格式解析为时间戳或将时间戳格式化为时间格式时才相关

您应该使用mongodb跟踪日志(而不是
Query.toString
)检查驱动程序真正触发的内容。您可以使用

// Enable MongoDB logging in general
System.setProperty("DEBUG.MONGO", "true");

// Enable DB operation tracing
System.setProperty("DB.TRACE", "true");