2011-10-07 93 views
24

我正在将一个mysql数据库迁移到mongodb。但我已经阅读过MongoDb数据类型,然后没有提及像float,double,decimal这样的浮点类型。MongoDB支持浮点类型吗?

而我如何在我的sql模式中有十进制类型的一些字段,我该怎么做或我能做些什么?

+1

[蒙戈3.4增加了对十进制数据类型支持]( http://stackoverflow.com/a/40986686/1090562) –

回答

28

MongoDB中以二进制格式存储数据称为BSON支持这些数值数据类型:

  • int32 - 4个字节(32位带符号整数)
  • int64 - 8个字节(64位带符号整数)
  • double - 8个字节(64位IEEE 754浮点)

有没有准确值的定点相当于MongoDB中的mySQL的decimal类型,但是您可以将Mongo中的64位浮点数作为double存储。

值得一提的是,MongoDB shell(作为JavaScript shell)并未识别整数值和浮点值之间的区别,它将所有数字视为相同,因为JavaScript将所有数字表示为64位浮点数,无论的基础BSON类型。

然而,大多数MongoDB language drivers在整数类型和浮点类型之间进行了区分。

+2

对于重视计算的人来说,它是IEEE 754浮点的事实非常重要。令人惊讶的是,即使[Matlab](http://www.mathworks.com/support/solutions/en/data/1-79FEJH/index.html?product=ML&solution=1-79FEJH)也不支持! – meawoppl

1

它具有,Introduction

的值是

  • 基本类型像字符串,整数,浮点数,时间戳,二进制等,
  • 一个文件,或
  • 一组数值
0

实际上MongoDB中的每个数字都是一个64位的浮点数。问题出现在Javascript shell无法表示某些浮点值。你不应该有任何问题将你的浮点数,双精度或小数转换为Mongo中的数字。

3

克里斯已经提供了有关浮点类型,所以我只是补充关于Decimal data type这是在蒙戈3.4

3中添加信息。4增加了对新的十进制数据类型的decimal128格式的支持。 decimal128格式支持最多34位十进制 数字(即有效数字)和指数范围-6143至 +6144。

与双数据类型不同,它只存储十进制值的近似值,十进制数据类型存储精确值。对于 例如,十进制NumberDecimal(“9.99”)具有9.99 精确值,其中作为双重9.99将具有 9.9900000000000002131628近似值...

相关问题