MongoDB understøtter ikke korrekt decimaler indtil MongoDB v3.4. Før denne version gemte den decimaler som strenge for at undgå præcisionsfejl.
Pre v3.4 Gem decimaler som strenge, men dette forhindrer aritmetiske operationer. Operatører som $min
, $avg
, ... vil ikke være tilgængelig. Hvis præcision ikke er en stor sag, så kan du muligvis skifte til double
.
v3.4+ Du skal sikre dig, at følgende forudsætninger er sande:
- MongoDB-serveren skal være mindst v3.4.
- MongoCSharpDriver skal være mindst v2.4.3.
- Databasen skal have
featureCompatibilityVersion
indstillet til'3.4'
. Hvis din database er blevet oprettet af en ældre MongoDB-version, og du har opgraderet din server til v3.4, er din database muligvis stadig på en ældre version.
Hvis du har alle egenskaberne indstillet, skal du registrere følgende serializers for at bruge decimal128
type:
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));