2d
Indexes
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"}
}
を明示的に指定する必要があります。