2d インデックスでは、ロケーションの精度は、インデックス データの保存に使用されるジオハッシュ値のビット単位のサイズによって定義されます。 デフォルトでは、2d インデックスは 26 ビットの精度を使用します。これは約 2 フィート(60 メートル)に相当します。
ロケーションの精度は、挿入操作と読み取り操作のパフォーマンスに影響します。
デフォルトの精度を変更するには、2d インデックスを作成するときにbits値を指定します。 1 から 32 までのbits値を指定できます。
db.<collection>.createIndex( { <location field>: "2d" }, { bits: <bit precision> } )
このタスクについて
ロケーションの精度は クエリのパフォーマンスに影響します。
精度を下げると、挿入および更新操作のパフォーマンスが向上し、使用するストレージが少なくなります。
精度が高いほど、クエリがインデックスのより小さな部分をスキャンして結果を返すため、読み取り操作のパフォーマンスが向上します。
ロケーションの精度はクエリの精度に影響しません。 グリッド座標は常に最終クエリ処理で使用されます。
始める前に
contacts コレクションを次のように作成します。
db.contacts.insertMany( [ { name: "Evander Otylia", phone: "202-555-0193", address: [ 55.5, 42.3 ] }, { name: "Georgine Lestaw", phone: "714-555-0107", address: [ -74, 44.74 ] } ] )
addressフィールドにはlegacy coordinate pairs が含まれています。
手順
addressフィールドに 2D インデックス を作成します。 32ビットのロケーション精度を指定する。
db.contacts.createIndex( { address: "2d" }, { bits: 32 } )
次のステップ
2d インデックスを使用して、近接性クエリなどの位置データの計算を実行できます。