1

Java からの永続オブジェクトに Morphia を使用しています。また、コンソールからいくつかのバッチ プロセスを実行しています。一部の値が NumberLong として格納され、number がプレーンな Javascript の数値として格納されていることに気付きました。

このフィールドにインデックスがあります。すべてが問題ないようです-クエリを実行すると{f: 100} 、コンソールからは、実際に含まれている場合でもオブジェクトが返されます{f: NumberLong(100)}

これはすべてのドライバーに当てはまりますか?NumberLong を避けることをお勧めします。値を 32 ビット内に収めることができますか? すべての NumberLong を基本数値に変換すると、多くのデータとインデックス スペースを節約できますか?

4

1 に答える 1

1

プレーンな JavaScript 数値は 64 ビットの浮動小数点数 (double) であり、8 バイトを占めるため、スペースの節約はこれを行う理由にはなりません。値が一貫していることにはおそらく価値があり、異なる数値型の間にはトレードオフがあります。32 ビット整数が必要な場合は、その型 (NumberInt) がシェルにあります。ドライバーは通常、物事をドライバーの言語にマッピングしようとしますが、機能はドライバー間で可能な限り一致します。

于 2012-04-14T22:39:39.743 に答える