Pet*_*gne 8 c# decimal mongodb
我对MongoDB没什么经验.我经常在大型SQL服务器DB上工作.
MongoDB只支持double,没有小数.C#驱动程序将小数序列化为字符串.
如果我将小数字存储为MongoDB中的字符串,我会错过什么功能?
有没有办法将小数的默认序列化设置为double(AllowTruncation)而不必在每个属性上放置属性?
如果我使用Bson双倍,我会失去什么精确度?
谢谢你的帮助!
我有一个在C#中使用小数的现有应用程序模型.我想将MongoDB用作新的数据库层,并尽可能在现有应用程序中进行更改.这就是为什么我在寻找一种方法将C#中的小数映射到MongoDB中加倍.
我明白我的精确度会下降,并且必须分析它的副作用.我唯一剩下的问题是要知道是否有办法将小数的默认序列化设置为double.
再次感谢.到目前为止很棒的答案和评论.
我将部分回答你的问题(因为我对C#了解不多).
那么如果你将小数作为字符串存储,你会失去什么.
如果将十进制存储为double,会导致精度损失:
.
db.c.insert({_id : 1, b : 3.44})
db.c.update({_id : 1},{$inc : {b : 1}})
db.c.find({b: 4.44}) // WTf, where is my document? There is nothing there
Run Code Online (Sandbox Code Playgroud)
关于第二个子问题:
有没有办法将小数的默认序列化设置为double(AllowTruncation)而不必在每个属性上放置属性?
我真的不明白它,所以我希望有人能够回答它.
从Mongodb 3.4和2.4 Mongodb C#驱动程序开始,支持十进制类型.
文档的[BsonRepresentation(BsonType.Decimal128)]属性必须具有在MongoDB.Bson.Serialization.Attributes命名空间中找到的属性.
这将映射到"YourDecimalValue" : NumberDecimal("100.0000")MongodDB.Robomongo支持1.1版Beta版的新十进制类型.