MongoDB správně nepodporuje desetinná místa až do MongoDB v3.4. Před touto verzí ukládal desetinná místa jako řetězce, aby se zabránilo chybám v přesnosti.
Před verzí 3.4 Ukládejte desetinná místa jako řetězce, ale to zabrání aritmetickým operacím. Operátoři jako $min
, $avg
, ... nebude k dispozici. Pokud přesnost není velký problém, možná budete moci přejít na double
.
verze 3.4 a vyšší Musíte se ujistit, že jsou splněny následující předpoklady:
- Server MongoDB by měl být alespoň v3.4.
- MongoCSharpDriver by měl být alespoň v2.4.3.
- Databáze by měla mít
featureCompatibilityVersion
nastavte na'3.4'
. Pokud byla vaše databáze vytvořena starší verzí MongoDB a upgradovali jste svůj server na verzi 3.4, může být vaše databáze stále na starší verzi.
Pokud máte nastaveny všechny vlastnosti, zaregistrujte následující serializátory pro použití decimal128
typ:
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));