MongoDB không hỗ trợ đúng số thập phân cho đến khi MongoDB v3.4. Trước phiên bản này, nó đã lưu trữ số thập phân dưới dạng chuỗi để tránh lỗi chính xác.
Trước v3.4 Lưu trữ số thập phân dưới dạng chuỗi, nhưng điều này ngăn cản các hoạt động số học. Các toán tử là $min
, $avg
, ... sẽ không khả dụng. Nếu độ chính xác không phải là vấn đề lớn, thì bạn có thể chuyển sang double
.
v3.4 + Bạn cần đảm bảo các điều kiện tiên quyết sau là đúng:
- Máy chủ MongoDB tối thiểu phải là v3.4.
- MongoCSharpDriver tối thiểu phải là v2.4.3.
- Cơ sở dữ liệu phải có
featureCompatibilityVersion
đặt thành'3.4'
. Nếu cơ sở dữ liệu của bạn đã được tạo bằng phiên bản MongoDB cũ hơn và bạn đã nâng cấp máy chủ của mình lên v3.4 thì cơ sở dữ liệu của bạn có thể vẫn ở phiên bản cũ hơn.
Nếu bạn đã đặt tất cả các thuộc tính, hãy đăng ký bộ tuần tự hóa sau để sử dụng decimal128
loại:
BsonSerializer.RegisterSerializer(typeof(decimal), new DecimalSerializer(BsonType.Decimal128));
BsonSerializer.RegisterSerializer(typeof(decimal?), new NullableSerializer<decimal>(new DecimalSerializer(BsonType.Decimal128)));