2d
インデックス の作成
地理空間2d
インデックスを構築するには、 db.collection.createIndex()
メソッドを使用し、 2d
を指定します。 次の構文を使用します。
db.<collection>.createIndex( { <location field> : "2d" , <additional field> : <value> } , { <index-specification options> } )
2d
インデックスでは、次の任意のインデックス指定オプションが使用されます。
{ min : <lower bound> , max : <upper bound> , bits : <bit precision> }
インデックスのロケーション範囲の定義2d
デフォルトでは、 2d
インデックスは経度と緯度を指定し、その境界は-180 で、180以外の値を返します。 ドキュメントに指定された範囲外の座標データが含まれている場合、MongoDB はエラーを返します。
重要
デフォルトの境界では、アプリケーションは無効な緯度が 90 より大きいか -90 より小さいドキュメントを挿入できます。 このような無効なポイントを持つ地理空間クエリの動作は定義されていません。
2d
インデックスでは、ロケーション範囲を変更できます。
デフォルト以外のロケーション範囲で2d
地理空間インデックスを構築できます。 インデックスを作成するときは、 min
とmax
オプションを使用します。 次の構文を使用します。
db.collection.createIndex( { <location field> : "2d" } , { min : <lower bound> , max : <upper bound> } )
インデックスのロケーション精度の定義2d
デフォルトでは、legacy coordinate pairs の2d
インデックスは 26 ビットの精度を使用します。これは、デフォルトの範囲が -180 から 180 の場合、2 フィートまたは 60 メートルの精度とほぼ同等です。 精度は、位置データの保存に使用されるジオハッシュ値のビット単位で測定されます。 最大 32 ビットの精度で地理空間インデックスを構成できます。
インデックスの精度はクエリの精度に影響を与えません。 実際のグリッド座標は、常に最後のクエリ処理で使用されます。 精度を下げることの利点は、挿入操作の処理オーバーヘッドが少なくなり、使用されるスペースが少ないことです。 精度を高める利点は、クエリがインデックスのより小さな部分をスキャンして結果を返すことです。
デフォルト以外のロケーション精度を設定するには、インデックスの作成時にbits
オプションを使用します。 次の構文を使用します。
db.<collection>.createIndex( {<location field> : "<index type>"} , { bits : <bit precision> } )
ジオハッシュ値の内部については、「 2d
インデックスのジオハッシュ値の計算 」を参照してください。