MongoDB Mapreduce总是返回浮点数的结果吗?

时间:2010-09-17 01:46:27

标签: mongodb mapreduce mongoid

我正在使用Mongoid,它位于Ruby MongDB驱动程序之上。即使我的Map发出的是parseInt(num),而Reduce的返回也返回parseInt(num),最终的结果仍然是浮点数。

这对MongoDB有用吗?有什么办法让它变成整数?

1 个答案:

答案 0 :(得分:5)

parseInt函数正式将字符串作为参数。解析此字符串就好像它是一个整数,因此忽略了第一个非数字字符后的所有内容。如果提供浮点数,它将在解析之前转换为字符串。

parseInt函数返回Number,而不是整数。 Number是JavaScript中唯一的数字数据类型;整数和浮点数没有区别。

因此,虽然parseInt将删除任何小数,但数据类型不会更改。因此,Mongoid不知道是将结果视为浮点数还是整数。您负责将结果转换为整数,如this example中所示。

更新

我遇到了NumberLong类型,它代表一个64位整数。如果从reduce函数返回new NumberLong(num),Mongoid可能会将其视为整数类型。

请注意,您需要MongoDB 1.6才能在MongoDB Shell中使用它。我不知道Mongoid是否支持它。