MongoDB non supporta correttamente i decimali fino a MongoDB v3.4. Prima di questa versione memorizzava i decimali come stringhe per evitare errori di precisione.
Precedente alla v3.4 Memorizza i decimali come stringhe, ma questo impedisce le operazioni aritmetiche. Operatori come $min
, $avg
, ... non sarà disponibile. Se la precisione non è un grosso problema, potresti essere in grado di passare a double
.
v3.4+ Devi assicurarti che le seguenti precondizioni siano vere:
- Il server MongoDB dovrebbe essere almeno v3.4.
- MongoCSharpDriver dovrebbe essere almeno v2.4.3.
- Il database dovrebbe avere
featureCompatibilityVersion
impostato su'3.4'
. Se il tuo database è stato creato da una versione precedente di MongoDB e hai aggiornato il tuo server alla v3.4, il tuo database potrebbe essere ancora su una versione precedente.
Se hai impostato tutte le proprietà, registra i seguenti serializzatori per utilizzare il decimal128
digita:
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));