Does MongoDB support floating point types?

2019-01-12 01:47发布

I am migrating a mysql database to mongodb. But i have read in MongoDb data types and then there is no reference to floating point types like, float, double, decimal.

And how i have some fields with decimal types in my sql schema , how can i do or what can i do?

4条回答
放荡不羁爱自由
2楼-- · 2019-01-12 02:20

MongoDB does support storing doubles, but not all drivers provide an interface to them for some reason.

From http://www.mongodb.org/display/DOCS/Data+Types+and+Conventions -

Mongo uses special data types in addition to the basic JSON types of string, integer, boolean, double, null, array, and object.

查看更多
霸刀☆藐视天下
3楼-- · 2019-01-12 02:28

MongoDB stores data in a binary format called BSON which supports these numeric data types:

  • int32 - 4 bytes (32-bit signed integer)
  • int64 - 8 bytes (64-bit signed integer)
  • double - 8 bytes (64-bit IEEE 754 floating point)

There's no exact value fixed-point equivalent to mySQL's decimal type in MongoDB, but you can store 64-bit floating point numbers in Mongo as a double.

It's worth mentioning that the MongoDB shell - being a JavaScript shell - doesn't recognise the distinction between integer and floating-point values, it treats all numbers the same because JavaScript represents all numbers as 64-bit floating point, regardless of their underlying BSON type.

Most MongoDB language drivers, however, make the distinction between integer and floating point types.

查看更多
仙女界的扛把子
4楼-- · 2019-01-12 02:31

It has, Introduction

A value is a

  • basic type like string, integer, float, timestamp, binary, etc.,
  • a document, or
  • an array of values
查看更多
做个烂人
5楼-- · 2019-01-12 02:38

Chris already provided information about floating point types, so I will just add information about Decimal data type that was added in Mongo 3.4

3.4 adds support for the decimal128 format with the new decimal data type. The decimal128 format supports numbers with up to 34 decimal digits (i.e. significant digits) and an exponent range of −6143 to +6144.

Unlike the double data type, which only stores an approximation of the decimal values, the decimal data type stores the exact value. For example, a decimal NumberDecimal("9.99") has a precise value of 9.99 where as a double 9.99 would have an approximate value of 9.9900000000000002131628...

查看更多
登录 后发表回答