Docs Menu
Docs Home
/
MongoDBマニュアル
/

時系列インデックス

項目一覧

  • クラスター化されたコレクション
  • 複合インデックス
  • 部分インデックス
  • TTL Indexes
  • 禁止されているインデックス
  • インデックス作成のベストプラクティス

時系列コレクションのインデックスは、通常、一般的なコレクションのインデックスのように動作しますが、いくつかの考慮事項と制限があります。

時系列コレクションに のセカンダリ インデックスがあり、機能の互換性バージョン(FCV)をダウングレードする必要がある場合は、まずダウングレードされた FCV と互換性のないセカンダリ インデックスをすべて削除する必要があります。詳しくは、 {7setFeatureCompatibilityVersion を参照してください。

バージョン 6.0 以降、時系列コレクション内の任意のフィールドにセカンダリインデックスを追加できます。MongoDB は、個々のドキュメントではなく、ドキュメントのバケット単位で時系列コレクションをインデックス化します。時系列バケットには、共有された metaField 値を持つドキュメントが含まれ、近い timeField 値の順に並べられます。MongoDB は、metaField を除くすべてのフィールドの最小値と最大値をインデックス化します。個々の文書の代わりにバケットをインデックス化することで、インデックスサイズを縮小し、クエリの効率を向上させます。

Tip

クエリのパフォーマンスを向上させるために、時系列コレクションの任意のフィールドに手動でセカンダリインデックスを追加できます。

デフォルトでは、MongoDB はバケット時間に基づいて時系列コレクションをクラスター化します。

バージョン 6.3 で追加

MongoDB 6.3 以降、MongoDB は時系列コレクションの metaField と timeField の両方にデフォルトの複合インデックスを作成します。MongoDB はこのインデックスを使用して、クエリの性能と速度を向上させます。

timeFieldmetaField、または測定フィールドに複合インデックスを追加できます。

バージョン 6.0 で追加。

MongoDB6.0 以降、時系列コレクションで演算子 $or$in、および $geoWithin部分インデックスと合わせて使用できます。

metaField および timeField では部分インデックスを作成できません。

バージョン 6.3 で追加

MongoDB 6.3 以降、metaField のみに依存する partialFilterExpression を使用して TTL インデックスを作成できます。6.3 より前のバージョンでは、expireAfterSeconds パラメータに基づいて TTL インデックスのみを作成できます。

時系列コレクションでドキュメントを期限切れにするために expireAfterSeconds オプションを使用していない場合、部分的な TTL インデックスを作成すると、一致するドキュメントだけに有効期限が設定されます。コレクションですべてのドキュメントに expireAfterSeconds が使用されている場合は、部分的な TTL インデックスを使用して一致するドキュメントをより早く期限切れにすることができます。

MongoDB では、時系列コレクションで次のインデックス型は許可されません。

metaField にスパース インデックスを作成することはできません。

  • フィルタリングと等価性のために metaField インデックスを使用する。

  • 範囲クエリには timeField やその他のインデックス付きフィールドを使用する。

  • 一般的なインデックス戦略は、時系列コレクションにも適用される。詳細については、「インデックス戦略」を参照。

詳細と例については、時系列コレクションへのセカンダリインデックスの追加を参照してください。

戻る

マテリアライズドビューの構築