AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB ベクトル検索でのビューの使用

You can create a MongoDB Vector Search index on a View to transform documents and collections so that you can partially index a collection, support incompatible data types or data models, and more.

The following examples use the sample_mflix sample database.

注意

曖昧さ回避

This page discusses standard views. To learn about on-demand materialized views, see On-Demand Materialized Views.

To learn about the differences between the view types, see Comparison with On-Demand Materialized Views.

MongoDB 8.0 以降を使用する必要があります。

  • MongoDB v8.0以降の場合:

    • Atlas UIまたは Atlas 管理APIを使用して、ビューにMongoDB ベクトル検索インデックスを作成します。

    • ソースコレクションに対してMongoDB ベクトル検索クエリを実行します。ビュー で作成されたMongoDB ベクトル検索インデックスを参照します。これらのクエリでは、 ソースコレクションに現れる元のドキュメントが返されます。

  • MongoDB v8.1 以降の場合、さらに以下のことが可能です。

  • MongoDB v8.2 以降の場合、さらに以下のことが可能です。

To edit a View, you must have a User Admin role and use the collMod database command.

  • MongoDB ベクトル検索 は、次のステージを持つビューをサポートしています。

    You can use the $expr operator only within the $match stage.

  • インデックス名は、ソース コレクションとそのすべてのビューにわたって一意である必要があります。

  • MongoDB Vector Search doesn't support view definitions with operators that produce dynamic results, such as the $$USER_ROLES system variable and the $rand aggregation operator.

  • MongoDB ベクトル検索クエリでは、 ソースコレクションに現れる元のドキュメントが返されます。

To create a View, you must have the createCollection privilege.

Highly complex view transformations can increase indexing and query time. This is because the mongod must read the view definition when it filters and transforms the oplog entries during indexing (initial sync and steady state replication), and when it applies those transformations to the returned documents at query-time.

Atlas で余計なレプリケーション負荷を回避するために、 マテリアライズドビューの作成を検討してください。ビュー変換によるクエリレイテンシを回避するために、ソースコレクションを直接クエリすることもできます。

インデックスは次のシナリオで FAILED ステータスに変更されます。

  • MongoDB ベクトル検索と互換性のないビューにインデックスを作成する場合

  • MongoDB ベクトル検索 の互換性要件を満たさない方法でビューを編集する。

  • ビューのソース コレクションを削除または変更します。

    たとえば、1 つのビューが別のビュー上に作成され、親ビューのソースを別のコレクションに変更した場合です。

    注意

    この制限は、ビューが他のビューの子である場合にも適用されます。たとえば、すべての子が由来するソース コレクションを変更または削除することはできません。

インデックスは次のシナリオで STALE ステータスに変更されます。

警告

ビューで定義された集計パイプラインがコレクション内のドキュメントと互換性がない場合、検索レプリケーションは失敗します。たとえば、$toDouble 式が配列を含むドキュメント フィールドに対して操作されると、レプリケーションは失敗します。ビューがコレクション内のすべてのドキュメントでエラーなく動作することを確認してください。

  • インデックスが READY のときにビュー定義によって集計が失敗した場合、インデックスはSTALE になります。ドキュメントを解決するかビュー定義を変更して失敗しないようにすると、インデックスはREADY に戻ります。STALE の場合でも、インデックスは引き続きクエリ可能です。インデックスがoplogから削除されると、インデックスの再構築がトリガーされます。

  • インデックスが BUILDING の時にビュー定義によって集計パイプラインに障害が発生した場合、インデックス構築はそのドキュメントが修正されるまで停止します。ドキュメントを解決するか、ビュー定義を変更すると、インデックスは READY に戻り、失敗しなくなります。

You can view index statuses in the Atlas UI on the index status details page.

このエラーは、8.1 より前のバージョンのMongoDBを使用してビューをクエリすると表示されます。

  • 8.0 より前のバージョンのMongoDBを使用している場合は、ビューを直接クエリするために 8.1+ にアップグレードすることをお勧めします。ソースコレクションをクエリするには、 8.0 にアップグレードします。

  • MongoDB 8.0 を使用する場合は、 ソースコレクションに対してビューインデックスをクエリする必要があります。例、ビューではなくコレクションで .aggregate() を実行します。

ビューでMongoDB ベクトル検索インデックスを作成すると、mongot プロセスは通常のコレクションでMongoDB ベクトル検索インデックスを作成する場合と同じタスクを実行します。mongot プロセス:

  1. コレクションのインデックス定義 のルールに基づいてMongoDB ベクトル検索インデックスを作成します。

  2. MongoDB ベクトル検索インデックスを定義したコレクションのドキュメントとインデックスの現在の状態に関する 変更ストリーム をモニターします。

  3. MongoDB ベクトル検索クエリを処理し、一致するドキュメントのドキュメントID とその他の検索メタデータを mongod に返します。その後、ドキュメント全体が検索され、その結果がクライアントに返されます。

ビューでMongoDB ベクトル検索インデックスを作成すると、ステップ 1 と 2 中にビュー定義が適用され、変換されたドキュメントは検索インデックス定義に基づいてインデックス化され、ディスクに保存されます。

To learn more about Views, see Views.

To create a MongoDB Search index on a View, see Use Views with MongoDB Search.