View a markdown version of this page

インデックスプロパティ: hidden - Amazon DocumentDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

インデックスプロパティ: hidden

Amazon DocumentDB は、Amazon DocumentDB 8.0.1 で始まるhiddenインデックスプロパティをサポートします。

非表示インデックスはクエリプランナーに表示されず、クエリのサポートには使用できません。プランナーからインデックスを非表示にすることで、実際にインデックスを削除することなく、インデックスを削除した場合の潜在的な影響を評価できます。影響が負の場合は、ドロップされたインデックスを再作成する代わりに、インデックスを非表示にすることができます。

hidden プロパティは、単一フィールド、複合、マルチキー、テキスト、地理空間、ベクトルインデックスなど、すべてのインデックスタイプでサポートされています。

動作

プランナーから非表示になるだけでなく、非表示のインデックスは完全に維持され、適用されます。例えば、次のようになります。

  • 非表示のインデックスが一意のインデックスである場合も、インデックスはその一意の制約をドキュメントに適用します。

  • 非表示のインデックスが TTL インデックスの場合、インデックスは引き続きドキュメントを期限切れにします。

  • 非表示インデックスは listIndexesおよび db.collection.getIndexes()結果に含まれます。

  • 非表示インデックスは、コレクションへの書き込みオペレーションで更新され、引き続きディスク容量とメモリを消費します。その結果、 db.collection.stats()や などの統計オペレーションに含まれます$indexStats

  • 非表示のインデックスを非表示にするか、非表示のインデックスを非表示にすると、 は をリセットします$indexStats。既に非表示のインデックスを非表示にしたり、既に非表示のインデックスを非表示にしたりしても、 はリセットされません$indexStats

制限事項

  • _id インデックスを非表示にすることはできません。

  • cursor.hint() を使用して非表示のインデックスを強制的に使用することはできません。

  • $merge onフィールドで必要な一意のインデックスが非表示の場合、 は失敗します。を実行する前にインデックスを表示します$merge

非表示インデックスを作成する

非表示状態のインデックスを作成するには、 db.collection.createIndex()メソッドを使用して、インデックス定義truehiddenオプションを に設定します。

たとえば、次のオペレーションでは、 productIdフィールドに非表示の昇順インデックスを作成します。

db.collection.createIndex( { "productId": 1 }, { "name": "productId_1", "hidden": true } )

検証するには、コレクションlistIndexesdb.collection.getIndexes()または を実行します。非表示インデックスの定義"hidden": trueには が含まれます。

db.collection.getIndexes() [ { "v": 4, "key": { "_id": 1 }, "name": "_id_" }, { "v": 4, "key": { "productId": 1 }, "name": "productId_1", "hidden": true } ]

インデックスオプションhiddenは、値が の場合にのみ返されますtrue

既存のインデックスを非表示にする

collMod コマンドを使用して、既存のインデックスを非表示にします。インデックスをその nameまたは で識別しkeyPatternhiddenを に設定しますtrue

次の例では、名前でインデックスを非表示にします。

db.runCommand({ collMod: "collection", index: { name: "productId_1", // Specify the index name hidden: true } })

キーパターンでインデックスを識別することもできます。

db.runCommand({ collMod: "collection", index: { keyPattern: { productId: 1 }, // Specify the index key specification document hidden: true } })

既存のインデックスを非表示にする

非表示のインデックスを再度表示するには、 を hiddenに設定して collMod コマンドを使用しますfalse

db.runCommand({ collMod: "collection", index: { name: "productId_1", hidden: false } })

インデックスは非表示のまま完全に維持されるため、非表示にするとすぐに使用できます。