我看到MySQL中的一些数据类型不在MongoDB中,是这样吗?
请给我比较一下MySQL和MongoDB中的数据类型。
答案 0 :(得分:5)
MySQL拥有比MongoDB更多的数据类型,主要是因为它支持更多的数据类型。
首先要理解的是,所有不是标准字符串或整数的“数据类型”通常都需要包装器,或者更确切地说是对象封装。
这里的一个很好的例子是日期,在MySQL中你有DATETIME
,DATE
,YEAR
,TIMESTAMP
等等,而MongoDB只有ISODate()
实际上并没有直接的翻译表,但我会尝试为你挖掘出基本的翻译表。
注意:由于某些未知原因,MongoDB文档实际上已经取出了您可用的完整数据类型列表,因此我不得不搜索一下隐藏在词汇表中的这个列表:{{3 }}
在查看该列表时,您会注意到的第一件事是MySQL本身不存在许多数据类型,例如“对象”或“数组”,但是:
Binary
有时在MySQL中称为BLOB
,通常可通过{d: new BinData($b)}
ObjectId
是MongoDB用于主键类型的特殊MongoDB数据类型String
是VARCHAR
,TEXT
,LONGTEXT
以及所有其他字符串类型在MySQL中的组合,通常用作{d: 'lalalaalala'}
。Boolean
在MySQL中通常称为BOOL
或TINYINT(1)
,它基本上用作:{d:true}
。Date
被称为TIMESTAMP
,DATE
,DATETIME
,YEAR
以及MySQL中的所有其他日期类型,其使用方式与{{1}相同} {d: new ISODate()}
,TINYINT(11)
,INTEGER
,INT
等,其使用方式与{{1 }} SMALLINT
和{d:5}
,用作MEDIUMINT
BIGINT
在MySQL中很好{d:new NumberLong("4")}
,用作NULL
NULL
不是你公开使用的,所以我不会谈论它,听起来不是这样。{d:null}
与MySQL中的Timestamp
和Double
相关,可以像DECIMAL
一样使用,但由于精度的原因,我建议您将浮点数和双精度存储为整数。我认为这涵盖了您需要了解的主要内容。
有点希望它有所帮助。