3

RubyMongDBドライバーの上にあるMongoidを使用しています。私のマップの放出はを与えparseInt(num)、リデュースの戻りはまたを返しますがparseInt(num)、最終的な結果はまだフロートです。

それはMongoDBに特有ですか?代わりに整数にする方法はありますか?

4

1 に答える 1

5

このparseInt関数は、正式には文字列をパラメータとして受け取ります。この文字列は整数であるかのように解析されるため、最初の非数値文字以降のすべてが無視されます。浮動小数点数を指定すると、解析される前に文字列に変換されます。

関数は整数ではなく、を返しparseIntます。JavaScriptの唯一の数値データ型です。整数と浮動小数点数の区別はありません。NumberNumber

したがってparseInt、小数は削除されますが、データ型は変更されません。したがって、Mongoidは、結果を浮動小数点数として扱うか整数として扱うかを知りません。この例でわかるように、結果を整数に変換するのはあなたの責任です。

アップデート

NumberLong64ビット整数を表すタイプに出くわしました。reduce関数から戻るnew NumberLong(num)と、Mongoidはそれを整数型として扱う場合があります。

これをMongoDBシェルで機能させるには、MongoDB1.6が必要であることに注意してください。Mongoidがそれをサポートしているかどうかはまだわかりません。

于 2010-09-17T07:52:42.370 に答える