3

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

这是 MongoDB 特有的吗?有什么方法可以使它成为整数吗?

4

1 回答 1

5

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

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

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

更新

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

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

于 2010-09-17T07:52:42.370 回答