在我使用带有JSON的angular,node和mongodb的web项目中,JSON序列化程序本身不支持date。这个问题有一个解决方法,如here所示。但是,我想知道将日期作为日期对象而不是MongoDB中的字符串保存的好处是什么?我对这个项目并不是那么远,所以我没有看到差异。
答案 0 :(得分:7)
通过将日期保存为日期而不是字符串,您可能会错过一些非常有用的功能:
$gt
和$lt
查询日期范围。 YYYYMMDD
的日期是12字节(BSON中的字符串以长度为4字节的整数作为前缀)。当您将其存储为使用ISO 8601标准必须提供的所有ISODate字符串(日期,时间精确到毫秒和时区)时,您有32字节 - 存储空间的四倍。您需要知道这对您的项目是否有任何影响。
当你真的想避免使用BSON日期类型时,你应该考虑将日期存储为一个数字,表示经过的毫秒/秒/小时/天(适用于你的用例),因为一个固定的时间点而不是一个字符串。这样你就可以保留除了第2点之外的所有优点。
答案 1 :(得分:2)
如果采用这种方法,至少应该使用ISO日期。但我认为将日期值存储为日期对象有好处。将日期存储为日期对象将允许您添加索引,还应该有助于日期范围查询。说这么多开发人员似乎很乐意将日期存储为字符串,请参阅What is the best way to store dates in MongoDB?