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基本上转为双值。
有没有人知道这里有什么问题,为什么要转换它?
答案 0 :(得分:1)
MapReduce是JavaScript,JavaScript没有真正的Integer类型,只是一个“数字”类型,它基本上是一个双重类型。因此,无论何时使用M / R执行任何数字运算,结果都会返回为双倍。
您必须通过在C#中解析它们将它们转换回Integer。请记住,双精度没有完美的精度,因此在非常大的数字中添加1实际上可能无法表示,即对于非常大的X,X + 1 === X
。