2d Indexes
2 d インデックスは、 2 次元平面上の点として保存されたデータに対するクエリをサポートします。 2 d インデックスはlegacy coordinate pairs に対するクエリを対象としています。
2d インデックスを作成するには、インデックスstring2d
タイプとして {0 を指定します。
db.<collection>.createIndex( { <location field> : "2d" } )
GeoJSONオブジェクトのクエリには 2d インデックスは使用できません。 GeoJSON オブジェクトでクエリを有効にするには、 2dsphere インデックス を使用します。
注意
2 d インデックスを作成する場合、最初の値(経度)は - 180から180までの範囲でなくてはなりません。 2 番目の値(緯度)は、- 90から90までの範囲でなくてはなりません。 ただし、 2 d インデックスのmin
とmax
オプションを使用してこれらのデフォルト制限を上書きできます。 2 dsphere インデックス座標とは異なり、 2d indexes
値は球体を「包み込み」ません。
ユースケース
2d インデックスを使用して、2 次元平面内で表されたデータをクエリおよび計算します。 例:
2 つのアート作品間の視覚的な類似性を分析するアプリケーション。
2 次元グラフに対して計算を実行できる計算子。
2 次元マップ上のプレイヤー間の距離を計算するモバイルゲーム。
はじめる
2d インデックスの作成およびクエリ方法については、以下を参照してください。
詳細
サポートされている計算
2d インデックスは平面的なユークリッド平面上の計算をサポートします。
球面形状計算の場合は、データをGeoJSON オブジェクトとして保存し、 2dsphere インデックス を使用して地理空間クエリをサポートします。
複合 2d インデックス
2 つのフィールドを参照する複合 2d インデックスを作成できます。
最初のフィールドは、ロケーション フィールドである必要があります。 インデックスは、このフィールドで最初に選択するクエリを構築します。
2 番目のフィールドは、追加の条件に基づいて結果をさらにフィルタリングします。
複合 2d インデックスは クエリをカバーできます。
sparse
プロパティ
2d インデックスは常にスパースで、スパースオプションを無視します。 ドキュメントに 2d インデックス フィールドがない場合(またはフィールドがnull
または空の配列である場合)、MongoDB はドキュメントのエントリーを 2d インデックスに追加しません。 挿入の場合、MongoDB はドキュメントを挿入しますが、2d インデックスには追加しません。
2d インデックスのキーと他のタイプのキーを含む複合インデックスの場合、インデックスがドキュメントを参照するかどうかは、2d インデックスのフィールドのみによって決定します。