C# Mongodb MapReduce将所有整数值转换为双精度

C# Mongodb MapReduce将所有整数值转换为双精度,c#,mongodb,mapreduce,C#,Mongodb,Mapreduce,代码是用C编写的# 这里doc.type和doc.date都作为整数存储在数据库中;但是当我检查变量result的值时,我发现所有的整数值都是相同的。0基本上变成了双值 有没有人知道这里到底是怎么回事,为什么会改变它 MapReduce是JavaScript,JavaScript没有真正的整数类型,只有一个基本上是双精度的“数字”类型。因此,无论何时使用M/R执行任何数字运算,结果都会以双倍形式返回 您必须通过在C#中解析它们,将它们转换回整数。请记住,double并没有完美的精度,因此将1添加

代码是用C编写的#

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


有没有人知道这里到底是怎么回事,为什么会改变它

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


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

始终可以将MapReduceResult类型转换为类来执行此操作。
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()