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