Mysqlデータベースをmongodbに移行しています。しかし、MongoDbデータ型を読み込んだ後、float、double、decimalなどの浮動小数点型への参照はありません。
また、SQLスキーマに10進数型のフィールドがいくつかあるのですが、どうすればよいですか?
MongoDBは、次の数値データタイプをサポートする [〜#〜] bson [〜#〜] と呼ばれるバイナリ形式でデータを保存します。
int32
-4バイト(32ビット符号付き整数)int64
-8バイト(64ビット符号付き整数)double
-8バイト(64ビットIEEE 754浮動小数点)MongoDBには、mySQLのdecimal
型に相当する正確な値の固定小数点はありませんが、64ビットの浮動小数点数をdouble
としてMongoに格納できます。
JavaScriptシェルであるMongoDBシェルは整数値と浮動小数点値の違いを認識せず、JavaScriptは基になるBSONに関係なくすべての数値を64ビット浮動小数点として表すため、すべての数値を同じように扱うことに言及する価値があります。タイプ。
ただし、ほとんどの MongoDB言語ドライバー は、整数型と浮動小数点型を区別します。
Chrisはすでに浮動小数点型に関する情報を提供しているので、Mongo 3.4で追加された Decimal data type に関する情報を追加します。
3.4では、新しいdecimalデータ型でdecimal128形式のサポートが追加されています。 decimal128形式は、最大34桁の10進数字(つまり、有効数字)と-6143から+6144の指数範囲をサポートします。
10進値の近似のみを格納するdoubleデータ型とは異なり、10進データ型は正確な値を格納します。たとえば、10進数のNumberDecimal( "9.99")の正確な値は9.99ですが、2倍の9.99の場合、およその値は9.9900000000000002131628 ...になります。
値は
- 文字列、整数、float、タイムスタンプ、バイナリなどの基本的なタイプ、
- ドキュメント、または
- 値の配列
MongoDBはdoubleの格納をサポートしていますが、すべてのドライバーが何らかの理由でdoubleへのインターフェースを提供しているわけではありません。
から http://www.mongodb.org/display/DOCS/Data+Types+and+Conventions -
Mongoは、文字列、整数、ブール、double、null、配列、オブジェクトの基本的なJSONタイプに加えて、特別なデータタイプを使用します。