2 次元平面上の点として保存されたデータには2dインデックスを使用します。 2dインデックスは、MongoDB 2.2以前で使用されている legacy coordinate pairs用です。
次の場合は、 2dインデックスを使用します。
データベースに MongoDB 2.2 またはそれ以前のlegacy coordinate pairsがあり、
位置データをGeoJSONオブジェクトとして保存しない場合。
地理空間クエリの詳細については、「 地理空間クエリ 」を参照してください。
Considerations
使用するインデックス付きフィールドパスを示すには、 $geoNearパイプライン ステージにkeyオプションを指定します。 これにより、 $geoNearステージは、複数の2dインデックスや複数の2 dsphere インデックスを持つコレクションで使用できます。
コレクションに複数の
2dインデックスや複数の2dsphere インデックスがある場合は、使用するインデックス付きフィールドパスを指定するためにkeyオプションを使用する必要があります。keyを指定しない場合、複数の2dインデックスや複数の2dsphere インデックスを使用できません。keyが ない と、複数の2dインデックスまたは2dsphereインデックス間のインデックス選択があいまいなためです。
注意
keyを指定せず、 2dインデックス インデックスが最大で 1 つしかない、もしくは2dインデックス インデックスが 1 つしかない場合、または両方ある場合、MongoDB は使用する2dインデックスを最初に探します。 2dインデックスが存在しない場合、MongoDB は使用する2dsphereインデックスを探します。
位置データに GeoJSON オブジェクトが含まれている場合は、 2dインデックスを使用しないでください。 legacy coordinate pairsとGeoJSON オブジェクトの両方にインデックスを付けるには、 2dsphereインデックスを使用します。
コレクションをシャーディングする場合、 2dインデックスをシャードキーとして使用することはできません。 ただし、別のフィールドをシャードキーとして使用して、シャーディングされたコレクションに地理空間インデックスを作成することはできます。
動作
2dインデックスは平面( ユークリッド平面 )での計算をサポートしています。 2dインデックスは球面( $nearSphere )が、球面上の幾何計算の場合(例: $geoWithin )は、データをGeoJSON オブジェクトとして保存し、 2dsphereインデックスを使用します。
2dインデックスは 2 つのフィールドを参照できます。 最初のものはロケーション フィールドである必要があります。 2d複合インデックスは、ロケーション フィールドで最初に選択するクエリを作成し、その結果を 追加の 条件でフィルタリングします。 複合2dインデックスは クエリをカバーできます。
sparse プロパティ
2d インデックスは常にスパースで、スパースオプションを無視します。 ドキュメントに2dインデックス フィールドがない場合(またはフィールドがnullまたは空の配列である場合)、MongoDB はドキュメントのエントリーを2dインデックスに追加しません。 挿入の場合、MongoDB はドキュメントを挿入しますが、 2dインデックスには追加しません。
2dインデックス キーと他のタイプのキーを含む複合インデックスの場合、インデックスがドキュメントを参照するかどうかは、 2dインデックス フィールドのみによって決定します。
照合オプション
2d インデックスは単純なバイナリ比較のみをサポートしており、照合オプションはサポートしていません。
単純ではない照合順序を持つコレクションに2dインデックスを作成するには、インデックスの作成時、 {collation: {locale: "simple"}
}を明示的に指定する必要があります。