5

C/C++ からのいくつかの構成値を MongoDB に保存し、再起動する機能を持つアプリケーションがあります (つまり、しばらく実行し、誰かがアプリケーションを中断し、構成を変更してから、アプリを再度実行し、どこにあるかを取得します)。やめました)。これは、ブール値と文字列の構成の魅力のように機能します。

しかし、いくつかの整数があります (現在の C/C++ 実装では 32 ビット値)。また、MongoDB コンソールを使用してこれらの整数値を変更すると、Mongo は常にそれらを Number として保存します (C/C++ 実装では 2 倍になります)。整数を想定している場所で double 値を取るようにアプリを変更しますが、Mongo に JavaScript コンソールから整数を強制的に保存させる方法があるかどうか疑問に思っていました。

助言がありますか?

4

3 に答える 3

9

C / C ++の「単語の意味」では、intは実際には32ビット値であることが保証されていません。intは少なくとも16ビットである必要がありますが、通常はプラットフォームアーキテクチャ(32ビットや64ビットなど)と一致します。

@Jasdが述べたように、JavaScriptには浮動小数点(doubleC)である数値型が1つだけあります。

NumberInt(..)MongoDBシェルから、関数を使用してBSON 32ビット整数値を取得したり、BSON64ビット整数を取得したりできるはずですNumberLong(..)

于 2012-07-01T21:27:15.100 に答える
0

MongoDB のシェルは、JavaScript エンジンによって強化されています。また、JavaScript には の型がありませんintegerNumber浮動小数点数の型であるのみを認識します。
MongoDB type を使用してみることができますがNumberLong、私がかつて同じ問題を抱えていたときはうまくいきませんでした。

于 2012-07-01T11:29:07.453 に答える