我看到MySQL中的一些数据类型在MongoDB中不存在,是这样吗?
请给我提供MySQL和MongoDB数据类型的比较。
MySQL拥有比MongoDB更多的数据类型,主要是因为它支持更多的数据类型。
首先需要了解的是,所有不是标准字符串或整数的“数据类型”通常都需要包装器,或者说对象封装。
一个很好的例子是日期,在MySQL中,你有DATETIME
、DATE
、YEAR
、TIMESTAMP
等等,而MongoDB只有ISODate()
。
实际上并不存在直接的翻译表,但我会尝试为您挖掘出基本的翻译。
注意:由于某些未知原因,MongoDB文档实际上已经删除了可用于您的完整数据类型列表,因此我不得不在词汇表中寻找这个列表:http://docs.mongodb.org/manual/reference/glossary/#term-bson-types
当您查看该列表时,您将注意到的第一件事是,有许多数据类型在MySQL中原生不存在,例如“Object”或“Array”,但是:
Binary
在 MySQL 中有时被称为 BLOB
,通常通过 {d: new BinData($b)}
访问。ObjectId
是 MongoDB 的一种特殊数据类型,用于 MongoDB 的主键类型。String
是 MySQL 中的 VARCHAR
、TEXT
、LONGTEXT
等所有字符串类型的组合,通常使用方式为 {d: 'lalalaalala'}
。Boolean
通常在 MySQL 中被称为 BOOL
或 TINYINT(1)
,基本上像这样使用:{d:true}
。Date
在 MySQL 中被称为 TIMESTAMP
、DATE
、DATETIME
、YEAR
等所有日期类型,并且通常使用方式为 {d: new ISODate()}
。TINYINT(11)
、INTEGER
、INT
、SMALLINT
等,并且通常使用方式为 {d:5}
。MEDIUMINT
和 BIGINT
,并且通常使用方式为 {d:new NumberLong("4")}
。NULL
在 MySQL 中是 NULL
,通常使用方式为 {d:null}
。Timestamp
不是你公开使用的内容,所以我不会谈论它,它不是它听起来的那样。Double
相关的是 MySQL 中的 DECIMAL
和 FLOAT
,可以像这样使用:{d:0.5}
,但由于精度问题,建议将浮点数和双精度数存储为整数。我相信这涵盖了你需要了解的主要内容。
内容很多,希望对你有所帮助。