我刚刚开始了解MongoDB,希望能慢慢从MySQLmigrations.

在MySQL中,有两种不同的数据类型——DATE ('0000-00-00')DATETIME ('0000-00-00 00:00:00').在我的MySQL中,我使用DATE类型,但我不确定如何将它们传输到MongoDB中.在MongoDB中,有一个Date对象,与DATETIME对象相当.似乎最适合使用Date个对象,但这会浪费空间,因为没有使用小时、分钟、秒.另一方面,将日期存储为字符串似乎是错误的.

在MongoDB中存储日期('0000-00-00')有黄金标准吗?

推荐答案

BSON(mongo本机使用的存储数据格式)有一个dedicated date type UTC datetime,它是一个64位(8字节)有符号整数,表示自Unix时间纪元以来的毫秒数.没有什么正当的理由可以解释为什么要使用任何其他类型来存储日期和时间戳.

如果您非常想在每个日期保存几个字节(同样,使用mongo的填充和最小块大小,以及所有只有在极少数情况下才值得麻烦的事情),您可以将日期存储为3字节二进制blob,方法是将其存储为YYYYMMDD格式的无符号整数,或者一个2字节的二进制blob,表示"从X年1月1日起的天数",其中X必须正确 Select ,因为它只支持跨越179年的日期范围.

编辑:正如下面的讨论所表明的,这只是在极少数情况下可行的方法.Basically; use mongo's native date type ;)

Mongodb相关问答推荐

Mongoose聚合- $过滤器不删除匹配元素

如何通过 Go 以 UUID 类型保存 Mongo 中的内容?

按数组mongodb中的第一个元素排序

Mongo 聚合将 $sort 与 $geoNear 结合使用

在 Mongo 聚合中,可以通过分组生成 3 个不同的计数

在 MongoDB 中,如何使用对当前值进行操作的函数来更新嵌套文档的值?

如何在 2 个应用程序之间共享mongoose模型?

PHP 无法加载动态库 (mongo.so)

MongoDB中的readPreference和readConcern有什么区别?

使用 homebrew 和 Xcode 8.1.1 安装 Mongodb 失败

从 MongoDB find() 结果集中识别最后一个文档

如何在 MongoDb 中使用杰克逊将日期字段存储为 ISODate()

mongodump 是否锁定数据库?

使用 MongoDB 进行分页

Java MongoDB/BSON 类混淆

MongoDB 3 Java判断集合是否存在

MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

使用 Jackson 与 Java Mongo DBObject 进行高效 POJO 映射

一起使用 MongoDB 和 Neo4j

在 mongodb 集合中查找最旧/最新的帖子