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