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

db.コレクション.updateSearchIndex()(mongoshメソッド)

db.collection.updateSearchIndex()

バージョン7.0 の新機能(6.0.7 以降でも利用可能)。

既存のMongoDB SearchインデックスまたはMongoDB Vector Searchインデックスを更新します。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、updateSearchIndex コマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

コマンド構文:

db.<collection>.updateSearchIndex(
<name>,
{
<definition>
}
)

updateSearchIndex() 次のフィールドを取ります。

フィールド
タイプ
必要性
説明

name

string

必須

更新する検索インデックスの名前。

definition

ドキュメント

必須

作成するインデックスを説明するドキュメント。 definitionの構文は、標準検索インデックスを作成するか、ベクトル検索インデックスを作成するかによって異なります。 definitionの構文については、以下を参照してください。

検索インデックスの定義には、次のフィールドがあります。

{
analyzer: "<analyzer-for-index>",
searchAnalyzer: "<analyzer-for-query>",
mappings: {
dynamic: <boolean>,
fields: { <field-definition> }
},
analyzers: [ <custom-analyzer> ],
storedSource: <boolean> | {
<stored-source-definition>
},
synonyms: [ {
name: "<synonym-mapping-name>",
source: {
collection: "<source-collection-name>"
},
analyzer: "<synonym-mapping-analyzer>"
} ]
}
フィールド
タイプ
必要性
説明

analyzer

string

任意

インデックス作成時に string フィールドに適用するアナライザを指定します。

このフィールドを省略すると、インデックスは標準 アナライザを使用します。

searchAnalyzer

string

任意

テキストが検索される前にクエリ テキストに適用するアナライザを指定します。

このフィールドを省略すると、インデックスはanalyzerフィールドに指定されているのと同じアナライザを使用します。

searchAnalyzerフィールドとanalyzer フィールドの両方を省略すると、インデックスは 標準 アナライザを使用します。

mappings

オブジェクト

必須

このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。

mappings.dynamic

ブール値

任意

このインデックスの 動的フィールドマッピング を有効または無効にします。

trueに設定されている場合、インデックスにはサポートされているデータ型を含むすべてのフィールドが含まれます。

falseに設定されている場合は、 mappings.fieldsを使用してインデックスを作成するフィールドを個別に指定する必要があります。

省略した場合、デフォルトは false になります。

mappings.fields

ドキュメント

条件付き

動的マッピングが無効になっている場合にのみ必要です。

インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。

analyzers

配列

任意

このインデックスで使用するカスタム アナライザを指定します。

storedSource

ブール値または保存されたソース定義

任意

返された StoredSource オプションを使用して実行されるクエリに保存するドキュメント フィールドを指定します。

MongoDB Search ではすべてのMongoDB Search フィールド タイプのフィールドを保存できます。storedSource の値は次のいずれかになります。

  • true: すべてのフィールドを保存

  • false、フィールドを保存しない場合

  • ストレージからincludeまたはexcludeにフィールドを指定するオブジェクト

省略した場合、デフォルトは false になります。

詳しくは、MongoDB Search インデックスに保存されたソース フィールドの定義を参照してください。

synonyms

任意

インデックスで使用する シノニム マッピング を指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。

詳しくは、 MongoDB Search インデックスでのシノニム マッピングの定義 を参照してください。

ベクトル検索のインデックス定義には次のフィールドが含まれます。

{
"fields": [
{
"type": "vector" | "filter",
"path": "<field-to-index>",
"numDimensions": <number-of-dimensions>,
"similarity": "euclidean" | "cosine" | "dotProduct"
}
]
}

ベクトル検索のインデックス定義フィールドの説明については、「 ベクトル検索のフィールドにインデックスを作成する方法 」を参照してください。

updateSearchIndex() は、新しいインデックス定義でインデックスのビルドをトリガーします。 コマンドから応答を受け取ってから更新されたインデックスが準備完了するまでの間に遅延が発生する可能性があります。

新しいインデックスの構築中も、古いインデックス定義は引き続きクエリをサポートできます。 新しいインデックスの作成が完了すると、古いインデックスは使用できなくなります。 検索インデックスのステータスを確認するには、 $listSearchIndexes集計ステージを使用します。

配置でアクセス制御を適用する場合、 updateSearchIndex()を実行しているユーザーは、データベースまたはコレクションに対するupdateSearchIndex特権アクションを持っている必要があります。

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "updateSearchIndex" ]
}

組み込みのreadWrite } ロールとrestoreロールによってupdateSearchIndex特権が付与されます。 次の例では、 qaデータベースでreadWriteロールを付与しています。

db.grantRolesToUser(
"<user>",
[ { role: "readWrite", db: "qa" } ]
)

次の例では、新しいMongoDB Searchインデックスを作成し、そのインデックスを 更新します。

  1. moviesコレクションにsearchIndex01という名前の検索インデックスを作成します。

    db.movies.createSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "imdb.rating" ]
    }
    }
    )
  2. searchIndex01インデックスを更新します。

    db.movies.updateSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "movies" ]
    }
    }
    )