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,基本上变成了双精度值。

有谁知道这里是什么问题,为什么它转换?

Mongodb MapReduce将所有整型值转换为双精度

MapReduce是JavaScript, JavaScript没有真正的Integer类型,只有一个基本上是双精度的"Number"类型。因此,无论何时使用M/r执行任何数字运算,返回的结果都是双精度。

必须在c#中解析它们,将它们转换回Integer。请记住,双精度数没有完美的精度,因此在非常大的数上加1实际上可能无法表示,例如,对于非常大的x, X + 1 === X是不可表示的。