MongoDBは、MongoDBv3.4まで小数を適切にサポートしていません。このバージョン以前は、精度エラーを回避するために小数を文字列として格納していました。
v3.4より前 小数を文字列として格納しますが、これにより算術演算ができなくなります。 $min
としての演算子 、$avg
、...は利用できません。精度が重要でない場合は、double
に切り替えることができる場合があります 。
v3.4 + 次の前提条件が満たされていることを確認する必要があります。
- MongoDBサーバーは少なくともv3.4である必要があります。
- MongoCSharpDriverは少なくともv2.4.3である必要があります。
- データベースには
featureCompatibilityVersion
が必要です'3.4'
に設定 。データベースが古いバージョンのMongoDBで作成されていて、サーバーをv3.4にアップグレードした場合、データベースはまだ古いバージョンである可能性があります。
すべてのプロパティを設定している場合は、次のシリアライザーを登録してdecimal128
を使用します タイプ:
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));