web-dev-qa-db-ja.com

MongoDBは浮動小数点型をサポートしていますか?

Mysqlデータベースをmongodbに移行しています。しかし、MongoDbデータ型を読み込んだ後、float、double、decimalなどの浮動小数点型への参照はありません。

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

28
ulima69

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言語ドライバー は、整数型と浮動小数点型を区別します。

32
Chris Fulstow

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 ...になります。

4
Salvador Dali

はじめに

値は

  • 文字列、整数、float、タイムスタンプ、バイナリなどの基本的なタイプ、
  • ドキュメント、または
  • 値の配列
1
lostyzd

MongoDBはdoubleの格納をサポートしていますが、すべてのドライバーが何らかの理由でdoubleへのインターフェースを提供しているわけではありません。

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

Mongoは、文字列、整数、ブール、double、null、配列、オブジェクトの基本的なJSONタイプに加えて、特別なデータタイプを使用します。

0