O MongoDB não oferece suporte adequado a decimais até o MongoDB v3.4. Antes desta versão, armazenava decimais como strings para evitar erros de precisão.
Antes da v3.4 Armazene decimais como strings, mas isso evita operações aritméticas. Operadores como
$min
, $avg
, ... não estará disponível. Se a precisão não for grande coisa, você poderá mudar para double
. v3.4+ Você precisa ter certeza de que as seguintes pré-condições são verdadeiras:
- O servidor MongoDB deve ser pelo menos v3.4.
- MongoCSharpDriver deve ser pelo menos v2.4.3.
- O banco de dados deve ter
featureCompatibilityVersion
definido como'3.4'
. Se seu banco de dados foi criado por uma versão mais antiga do MongoDB e você atualizou seu servidor para a v3.4, seu banco de dados ainda pode estar em uma versão mais antiga.
Se você tiver todas as propriedades definidas, registre os seguintes serializadores para usar o
decimal128
tipo:BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));