2011-10-07 23 views
24

私はmysqlデータベースをmongodbに移行しています。しかし、私はMongoDbのデータ型を読み込んでいますが、float、double、decimalのような浮動小数点型への参照はありません。MongoDBは浮動小数点型をサポートしていますか?

また、SQLスキーマに10進数型のフィールドがいくつあるのですか?どうすればできますか?何ができますか?

+1

[Mongoの3.4は小数点データ型のサポートを追加する](持ちますhttp://stackoverflow.com/a/40986686/1090562) –

答えて

28

MongoDBのデータを記憶する:

  • int32 - 4バイト(32ビット符号付き整数)
  • int64 - 8バイト(64ビットの符号付き整数)
  • doubleから8バイト(64ビットIEEE 754浮動小数点)

ない正確な値の固定小数点はありませんMongoDBのmySQLのdecimal型に相当しますが、Mongoには64ビットの浮動小数点数をdoubleとして格納することができます。

JavaScriptのシェルであるMongoDBシェルは整数値と浮動小数点値の区別を認識せず、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

0

MongoDBは倍精度化をサポートしていますが、何らかの理由ですべてのドライバがそれらにインターフェイスを提供するわけではありません。

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

モンゴは、文字列、整数、ブール、ダブル、ヌル、アレイ、及びオブジェクトの基本的なJSONタイプに加えて、特殊なデータ型を使用します。

1

は、Introduction

値は、文字列、整数、浮動小数点、タイムスタンプ、バイナリ、等のような

  • 基本的なタイプ、
  • 文書でいます、または
  • 値の配列
0

実際、MongoDBのすべての数値は64​​ビットの浮動小数点数です。この問題は、Javascriptシェルが浮動小数点値を表現できないことから発生します。あなたは、浮動小数点数、倍数または小数をMongoの数値に変換する際に問題を起こすべきではありません。これらの数値データタイプをサポートBSONと呼ばれるバイナリ形式で

3

クリスはすでに浮動小数点型に関する情報を提供するので、私はちょうどモンゴ3.4

3を添加し、Decimal data typeについての情報が追加されます。4では、新しい10進データ型のdecimal128形式のサポートが追加されました。 decimal128形式は、最大34桁の10進数 桁(有効桁)と指数範囲-6143〜 +6144の数字をサポートします。

十進数の の近似値しか格納しない倍精度データ型とは異なり、10進データ型は正確な値を格納します。 例えば、小数NumberDecimalは(「9.99」)二重9.99として 9.9900000000000002131628の近似値を有するであろう9.99 の正確な値...

関連する問題