時系列インデックス
時系列コレクションのインデックスは通常、通常のコレクションのインデックスと同様に動作しますが、いくつか追加の考慮事項と制限があります。
時系列コレクション に の セカンダリ インデックス があり、機能の互換性バージョン(fCV)をダウングレードする必要がある場合は、まずダウングレードされた fCV と互換性のないセカンダリ インデックスをすべて削除する必要があります。詳しくは、setFeatureCompatibilityVersion
を参照してください。
バージョン6.0以降では、時系列コレクション内の任意のフィールドにセカンダリインデックスを追加できます。 MongoDBは、個々のドキュメントではなく、ドキュメントのバケット単位で時系列コレクションをインデックス化します。時系列バケットには、共有された metaField 値を持つドキュメントが、近い順の timeField 値の順に含まれます。 MongoDBは、 metaField を除くすべてのフィールドの最小値と最大値をインデックス化します。個々のドキュメントではなくバケットにインデックスを作成すると、インデックスのサイズが縮小され、 クエリの効率が向上します。
Tip
クエリのパフォーマンスを高めるために、時系列コレクション内の任意のフィールドにセカンダリ インデックス を手動で追加できます。
クラスター化されたコレクション
デフォルトでは 、 MongoDBはバケット時間に基づいて時系列コレクションをクラスター化します。
複合インデックス
バージョン 6.3 で追加。
MongoDB 6.3以降、 MongoDBは時系列コレクションの metaField と timeField の両方にデフォルトの複合インデックスを作成します。 MongoDBはこのインデックスを使用して、クエリのパフォーマンスと速度を向上させます。
timeField
、 metaField
、または測定フィールドに複合インデックスを追加できます。
部分インデックス
バージョン 6.0 で追加。
MongoDB6.0 以降では、時系列コレクションの 部分インデックス$or
とともに$geoWithin
、$in
、および 演算子を使用できます。
metaField および timeField では部分インデックスを作成できません。
TTL Indexes
バージョン 6.3 で追加。
MongoDB 6.3以降では、metaField のみに依存するpartialFilterExpression
を使用してTTLインデックスを作成できます。 6.3より前のバージョンでは、 expireAfterSeconds
パラメータに基づいて TTL インデックスのみを作成できます。
時系列コレクションでドキュメントを期限切れにするためにexpireAfterSeconds
オプションを使用していない場合、部分的な TTLインデックスを作成すると、一致するドキュメントのみの有効期限が設定されます。コレクションですべてのドキュメントにexpireAfterSeconds
が使用されている場合は、部分的な TTLインデックスを使用して一致するドキュメントをより早く期限切れにすることができます。
禁止されたインデックス
MongoDBでは、時系列コレクションで次のインデックスタイプは許可されません。
メタフィールド では スパース インデックス を作成できません。
インデックス作成のベストプラクティス
フィルタリングと等価性のために metaFieldインデックスを使用します。
範囲クエリには timeField やその他のインデックス付きフィールドを使用します。
一般的なインデックス戦略は、時系列コレクションにも適用されます。詳細については、「インデックスの作成戦略 」を参照してください。
詳細と例については、「時系列コレクションへのセカンダリ インデックスの追加 」を参照してください。