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)));