整数値のストレージ要件は小さくなりますが、もちろんそれほど重要ではありません。数値の並べ替え/インデックス作成アルゴリズムは、わずかに 通常の弦よりも速いですが、弦も非常に短いため、差は非常に小さくなります。
私は、2つの間に説得力のあるパフォーマンスの違いを期待していません。 IPV6アドレスの保存を計画している場合、問題はBSON( http://bsonspec.org/ #/仕様 )16バイトの数値を格納するための単純なデータ型がないため、数値としてのみ格納するのが必ずしも自然な方法ではありません。
結局、ストレージから画面への変換を避けたい場合、またはクエリをより自然に記述できるようにしたい場合は、文字列を使用する可能性があります:):
db.ips.find({addr: "192.168.1.1"})
文字列を使用する場合は、192.168.001.001
などの固定形式の文字列として保存することも検討することをお勧めします。 範囲検索など、より複雑な検索を実行する場合。一貫した固定形式で保存された文字列は自然に並べ替えられるため、他の方法で使用できるよりも多くの方法で使用できます。範囲が重要でない場合は、この方法で保存する必要はありません。
固定フォーマットでは、次のようなクエリを実行できます:
db.ips.find({ addr: {
$gte: "192.168.000.000",
$lte: "192.168.000.255" } })
これにより、(両端を含む)192.168.0.0
間のすべてのIPアドレスが検索されます。 および192.168.0.255
。
理想的には、次のいずれかの方法でフィールドにインデックスを作成します。
db.ips.ensureIndex({ addr: 1 })