我正在使用Mongoid,它位于Ruby MongDB驱动程序之上.即使我的Map的发出给出了一个parseInt(num)
,而Reduce的回报也给了a parseInt(num)
,最终的结果仍然是浮点数.
这是MongoDB特有的吗?任何使它成为整数的方法?
该parseInt
函数正式将字符串作为参数.解析此字符串就好像它是一个整数,因此忽略了第一个非数字字符后的所有内容.如果提供浮点数,则在解析之前将其转换为字符串.
的parseInt
函数返回一个Number
,而不是一个整数.Number
是JavaScript中唯一的数字数据类型 ; 整数和浮点数之间没有区别.
因此,虽然parseInt
将删除任何小数,但数据类型不会更改.因此,Mongoid不知道是将结果视为浮点数还是整数.您负责将结果转换为整数,如本例所示.
我遇到了NumberLong
类型,它代表一个64位整数.如果new NumberLong(num)
从reduce函数返回,Mongoid可能会将其视为整数类型.
请注意,您需要MongoDB 1.6才能在MongoDB Shell中使用它.我不知道Mongoid是否支持它.