Mongodb MapReduce将所有整型值转换为双精度
本文关键字:转换 双精度 整型 MapReduce Mongodb | 更新日期: 2023-09-27 18:11:10
string map = @"
function() {
var doc = this;
emit(doc._id, { name:doc.name, version: doc.version, type: doc.type, date: doc.date });
}";
var result = _collection.MapReduce(map, "").GetResults()
代码为c#
这里医生。输入和文档。日期都以整数形式存储在数据库中;但是当我检查变量结果的值时,我发现所有的整数值都加上了。0,基本上变成了双精度值。
有谁知道这里是什么问题,为什么它转换?
MapReduce是JavaScript, JavaScript没有真正的Integer类型,只有一个基本上是双精度的"Number"类型。因此,无论何时使用M/r执行任何数字运算,返回的结果都是双精度。
必须在c#中解析它们,将它们转换回Integer。请记住,双精度数没有完美的精度,因此在非常大的数上加1实际上可能无法表示,例如,对于非常大的x, X + 1 === X
是不可表示的。