使用Java在MongoDB中插入日期

使用Java在MongoDB中插入日期,java,mongodb,date,datetime,aggregation-framework,Java,Mongodb,Date,Datetime,Aggregation Framework,我在Dropwizard中有一个REST服务,它将数据从客户端存储到MongoDB,并在仪表板上查询MongoDB以进行实时分析 从客户端我得到了键值对的JSON,其中有一个日期字符串,如下所示: 2014-07-14T05:58:20 "Asia/Kolkata" 和时区如下: 2014-07-14T05:58:20 "Asia/Kolkata" 我必须以UTC格式保存mongodb中的所有文档 我想根据时区和存储将日期转换为UTC 我正在使用JodaDate这样做 DateTimeF

我在Dropwizard中有一个REST服务,它将数据从客户端存储到MongoDB,并在仪表板上查询MongoDB以进行实时分析

从客户端我得到了键值对的JSON,其中有一个日期字符串,如下所示:

2014-07-14T05:58:20
"Asia/Kolkata"
和时区如下:

2014-07-14T05:58:20
"Asia/Kolkata"
我必须以UTC格式保存mongodb中的所有文档

我想根据时区和存储将日期转换为UTC

我正在使用JodaDate这样做

DateTimeFormatter formatterInstance = DateTimeFormat
                        .forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(
                                DateTimeZone.forID(timeZone));
                dateInstance = formatterInstance.parseDateTime(timeString);
DateTime dtTz = dateInstance.withZone(DateTimeZone.UTC);
但当我试图在mongoDB中保存DateTime时,它会给出以下错误

Exception in thread "main" java.lang.IllegalArgumentException: can't serialize class org.joda.time.DateTime
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:120)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:289)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:261)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:226)
at com.mongodb.DBCollection.insert(DBCollection.java:75)
at com.mongodb.DBCollection.insert(DBCollection.java:59)
at com.mongodb.DBCollection.insert(DBCollection.java:104)
at com.datedemo.main.TimeZoneManager.getUTCTime(TimeZoneManager.java:65)
at com.datedemo.main.DateExample.main(DateExample.java:22)
Uptill现在我将日期以毫秒为单位存储在NumberLong()中DateTime.getMillis()中,但对于某些查询,如“折线图显示的日、月聚合”,很难处理longNumber

请建议其他方法,以便根据时区将所有日期存储在UTC中。
我想避免REST服务本地时区对日期进行任何转换。

你应该看看这3篇文章,它们会回答你的问题

mongodb JIRA中提交的Bug,用于解决聚合时区问题

在JODA中设置默认时区