4

我看到MySQL中的一些数据类型在MongoDB中是没有的,是这样吗?

请给我比较一下 MySQL 和 MongoDB 中的数据类型。

4

1 回答 1

5

MySQL 的数据类型比 MongoDB 多很多,主要是因为它支持的数据类型更多。

首先要理解的是,所有不是标准字符串或整数的“数据类型”通常都需要包装器,或者更确切地说是对象封装。

一个很好的例子是日期,在 MySQL 中你有DATETIME, DATE, YEAR,TIMESTAMP等等,而 MongoDB 只有ISODate().

实际上不存在直接的翻译表,但是我会尝试为您挖掘出基本的翻译表。

注意:由于某些未知原因,MongoDB 文档实际上已经删除了您可用的数据类型的完整列表,所以我不得不搜索一下隐藏在词汇表中的这个列表:http: //docs.mongodb.org/manual/reference /glossary/#term-bson-types

在查看该列表时,您会注意到的第一件事是,有很多数据类型在 MySQL 本机中不存在,例如“对象”或“数组”:

  • Binary有时BLOB在 MySQL 中调用,通常通过以下方式访问{d: new BinData($b)}
  • ObjectId是 MongoDB 用于主键类型的特殊 MongoDB 数据类型
  • Stringis VARCHAR, TEXT,LONGTEXT和所有其他字符串类型在 MySQL 中组合在一起,通常用作{d: 'lalalaalala'}.
  • Boolean在 MySQL中通常被称为BOOLor TINYINT(1),它的基本用法如下:{d:true}.
  • Date在 MySQL中被称为TIMESTAMP, DATE, DATETIME,YEAR和所有其他日期类型,使用如下{d: new ISODate()}
  • 32 位整数在 MYSQL 和其他小整数数据类型中有时称为TINYINT(11)INTEGER、等,其用法INT如下SMALLINT{d:5}
  • 64 位整数有时在 MySQL 中称为MEDIUMINTandBIGINT{d:new NumberLong("4")}
  • NULLNULL在 MySQL中运行良好,使用起来像{d:null}
  • Timestamp不是你会公开使用的,所以我不会谈论它,它不是听起来的样子。
  • Double与MySQL 相关DECIMAL并且FLOAT可以使用,{d:0.5}但是由于精度,我建议您将浮点数和双精度数存储为整数。

我相信这涵盖了您需要了解的主要内容。

有很多,所以希望它有所帮助。

于 2013-03-26T18:17:30.180 回答