Mongodb MapReduce将所有整数值转换为double

时间:2014-07-02 09:11:46

标签: c# mongodb mapreduce

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#中

这里doc.type和doc.date都作为整数存储在数据库中;但是当我检查变量结果的值时,我发现所有的整数值都是.0基本上转为双值。

有没有人知道这里有什么问题,为什么要转换它?

1 个答案:

答案 0 :(得分:1)

MapReduce是JavaScript,JavaScript没有真正的Integer类型,只是一个“数字”类型,它基本上是一个双重类型。因此,无论何时使用M / R执行任何数字运算,结果都会返回为双倍。

您必须通过在C#中解析它们将它们转换回Integer。请记住,双精度没有完美的精度,因此在非常大的数字中添加1实际上可能无法表示,即对于非常大的X,X + 1 === X