MongoDB stöder inte korrekt decimaler förrän MongoDB v3.4. Före denna version lagrade den decimaler som strängar för att undvika precisionsfel.
Pre v3.4 Lagra decimaler som strängar, men detta förhindrar aritmetiska operationer. Operatörer som $min
, $avg
, ... kommer inte att vara tillgänglig. Om precision inte är en stor sak kan du kanske byta till double
.
v3.4+ Du måste se till att följande förutsättningar är sanna:
- MongoDB-servern bör vara minst v3.4.
- MongoCSharpDriver bör vara minst v2.4.3.
- Databasen bör ha
featureCompatibilityVersion
inställd på'3.4'
. Om din databas har skapats av en äldre MongoDB-version och du har uppgraderat din server till v3.4 kan din databas fortfarande vara på en äldre version.
Om du har alla egenskaper inställda registrerar du följande serialiserare för att använda decimal128
typ:
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));