我试图使用mongodb将日期范围值存储在数据库中,所以我使用了String返回类型,但是我无法保存日期范围。是否可以将日期范围直接保存在数据库中,或者我必须将日期范围拆分为开始日期和结束日期并存储在数据库中?前端是AngularJS,后端是mongoDB ......
答案 0 :(得分:0)
MongoDB不提供任何类型的DateRange数据类型。
Java8提供Period
和Duration
类型。在Java8之前,有一个很棒的Joda Time
库,它也提供了Period和Duration数据类型。
用于Java的MongoDB库没有针对这些类型的任何类型的转换器。它只知道java.util.Data
。
但是,如果要存储Java8或Joda Period
或Duration
,则需要为Java MongoDB驱动程序编写客户数据类型转换器,或者直接在应用代码。 (两者都差不多)。
这样您就可以在MongoDB中将日期范围保存为{ range: {from: ISODate("2015-01-01T00:00:00.000Z"), to: ISODate("2015-01-02T00:00:00.000Z") } }
。
当然,您必须在range.from
和range.to
字段上进行查询。
第二部分当然是,HTML Date Range Picker的值可以正确地序列化为String,并且可以被Java后端读取。
虽然确保(例如通过简单地使用System.out.println(...)
)数据被Java正确反序列化。
如果一切正常,你可以处理MongoDB,即将DateRange对象转换为两个java.util.Date
对象等.pp。