MongoDB не поддържа правилно десетични знаци до MongoDB v3.4. Преди тази версия той съхраняваше десетичните знаци като низове, за да се избегнат грешки в прецизността.
Преди версия 3.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)));