在我使用带有 JSON 的 angular、node 和 mongodb 的 Web 项目中,JSON 序列化程序本身不支持日期。此问题有一个解决方法,如图所示 here .但是,我想知道在 MongoDB 中将日期保存为日期对象而不是字符串有什么好处?我对这个项目了解不多,所以我看不出有什么不同。
最佳答案
通过将日期保存为字符串而不是日期,您会错过一些非常有用的功能:
- MongoDB 可以使用
$gt
和$lt
查询日期范围。 - 在 3.0 版中,聚合框架获得了 many useful aggregation operators for date handling .这些都不适用于字符串,而且很少有字符串运算符可以充分替代它们。
- MongoDB 日期在 UNIX 纪元中进行内部处理,因此保存来自不同时区的时间戳或夏令时等讨厌的细节不是问题。
- BSON 日期只有 8 个字节。
YYYYMMDD
的最小形式的日期是 12 字节(BSON 中的字符串以 4 字节整数作为长度前缀)。当您将其存储为使用 ISO 8601 标准必须提供的所有内容(日期、精确到毫秒的时间和时区)的 ISODate 字符串时,您将拥有 32 字节 - 四倍的存储空间。
您需要知道这些对您的项目是否重要。
当你真的想避免使用 BSON 日期类型时,你应该考虑将你的日期存储为一个数字,代表自一个固定时间点以来经过的毫秒/秒/小时/天(无论适合你的用例)而不是字符串。这样您就可以保留除第 2 点以外的所有优势。
关于json - MongoDB:我应该使用字符串而不是日期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565156/