2dsphere インデックス
2dsphere インデックスは、地球のような球体上の地理空間クエリをサポートします。たとえば、2dsphere インデックスでは次のことが可能です。
指定したエリア内のポイントを決定します。
指定した点への近接度を計算します。
座標クエリで完全一致を返します。
インデックス フィールドの値は次のいずれかでなくてはなりません。
legacy coordinate pairsの場合、2dsphere インデックスはデータを GeoJSON points に変換します。
2dsphere インデックスを作成するには、インデックス型として文字列 2dsphere
を指定します。
db.<collection>.createIndex( { <location field> : "2dsphere" } )
注意
2dsphere インデックスを作成する場合、最初の値、つまり経度は -180 から 180 までの範囲でなくてはなりません。2 番目の値、つまり緯度は、 -90 から 90 までの範囲でなくてはなりません。これらの座標は球体を「包み込み」ます。たとえば、-179.9 と +179.9 は近傍です。
ユースケース
2dsphere インデックスを使用して、点が地球上または他の球面に表示されるロケーション データのクエリと計算を行います。以下に例を挙げます。
フード デリバリー アプリケーションは、2dsphere インデックスを使用して、近くのレストランの検索をサポートします。
ルート計画アプリケーションは、2dsphere インデックスを使用して休憩場所の間の最短距離を計算します。
都市計画担当者は、2dsphere インデックスを使用すると、市域内に存在する公園を探せます。
はじめる
2dsphere インデックスの作成およびクエリ方法については、以下を参照してください。
詳細
2dsphere インデックスは常にスパースで、複合インデックスの一部として作成されると、特別な動作をします。
sparse
プロパティ
2dsphere インデックスは常にスパースです。2dsphere インデックスを作成すると、MongoDB は sparse
オプションを無視します。
既存または新しく挿入されたドキュメントに 2dsphere インデックス フィールドが含まれていない場合(またはフィールドが null
または空の配列である場合)、MongoDB はドキュメントのエントリーをインデックスに追加しません。
2dsphere 複合インデックス
2dsphere インデックス キーと他のタイプのキーを含む複合インデックスの場合、インデックスがドキュメントを参照するかどうかは、2dsphere インデックス フィールドのみが決定します。
複合 2dsphere インデックスは、複数のロケーション フィールドと非ロケーション フィールドを参照できます。対照的に、複合 2d インデックスは、1 つのロケーション フィールドと 1 つの他のフィールドのみを参照できます。