MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare il tipo decimale in MongoDB

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)));