0

MongoDB のLong データ型に関するページを読むと、次のようなものを作成すると書かれています。

var myLong = new Long(low, high);

下位と上位は、より大きな 64 ビット数の符号付き 32 ビット部分です...

node-bigintを使用して、次の番号を文字列として取得しました

'164150943396226415094339622641509433'

この 64 ビットを変換するにはどうすればよいですか?! Long コンストラクターに必要な 32 ビットの下位ビットと上位ビットに文字列を変換します...

また、インデックス付きのMongo $gt検索は、文字列またはロングを使用すると高速になりますか?

前もって感謝します-私は私の深さから外れています...

編集1

右 -元の(もっとあいまいな) スレッドで - 答えは、この数値は 64 ビットには大きすぎるということです....

だから - 私の質問は、この番号を2つの部分で保存して検索する最速の方法は何ですか?元の文字列は次のようになります:

'164150943396226415' and '094339622641509433'

それらをロングに変換する必要がありますか(この場合、先行ゼロはどうなりますか)、または文字列検索は高速/低速です...

質問を言い換えることができます:

MongoDB では、Long または String の方が高速です。

'164150943396226415'

再度、感謝します....

4

1 に答える 1

0

右!

私は友人と話していました - 彼は私の誤った仮定をすべて説明してくれました...

数値 '164150943396226415094339622641509433' は 64 ビットには大きすぎます...

彼は、文字列の検索は常に文字ごとに行われ、数値を実際の 64 ビット数値の 2 つの補数ペアに分割する方が速いと述べました...

したがって、上記の数については、次のようになります。

var higher = Long.fromString('1641509433962264150');
var lower = Long.fromString('94339622641509433');

そして、次のことを行います。

( this.higher > that.higher ) && (this.lower > that.lower)

私自身の誤解に基づいた質問をして申し訳ありません:)

于 2012-08-16T13:13:27.637 に答える