MongoDB在3.4版之前不支持小数。在此版本之前,它将小数存储为字符串,以避免精度错误。
3.4版之前
将小数存储为字符串,但这会阻止算术运算。操作员
$min
,
$avg
,…不可用。如果精度不是什么大问题,那么您可以切换到
double
.
V3.4+
您需要确保以下前提条件是正确的:
-
MongoDB服务器应至少为v3.4。
-
MongoCSharpDriver应至少为2.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)));