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

Hidden Indexes

項目一覧

  • 動作
  • 制限事項

非表示のインデックスはクエリ プランナーには表示されず、クエリのサポートに使用することはできません。

プランナーからインデックスを非表示にすることで、実際にインデックスを削除せずに、インデックスを削除した場合の潜在的な影響を評価できます。 影響がマイナスの場合は、削除されたインデックスを再度作成する必要がある代わりに、インデックスを再表示できます。

プランナーから非表示になることは別として、非表示のインデックスは表示されていないインデックスと同様に動作します。すなわち

  • インデックスを非表示にするには、featureCompatibilityVersion5.0 以上に設定する必要があります。

  • _idインデックスは非表示にできません。

  • 非表示インデックスをcursor.hint()することはできません。

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

注意

db.collection.createIndex()hiddenオプションを使用するには、 featureCompatibilityVersion5.0以上に設定する必要があります。

たとえば、次の操作は、 boroughフィールドに非表示の昇順インデックスを作成します。

db.addresses.createIndex(
{ borough: 1 },
{ hidden: true }
);

確認するには、 addressesコレクションでdb.collection.getIndexes()を実行します。

db.addresses.getIndexes()

この操作では、次の情報が返されます。

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1
},
"name" : "borough_1",
"hidden" : true
}
]

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

注意

  • インデックスを非表示にするには、featureCompatibilityVersion5.0 以上に設定する必要があります。

  • _idインデックスは非表示にできません。

既存のインデックスを非表示にするには、 collModコマンドまたはmongoshヘルパーdb.collection.hideIndex()を使用できます。

たとえば、非表示にすることなくインデックスを作成します。

db.restaurants.createIndex( { borough: 1, ratings: 1 } );

インデックスを非表示にするには、次のいずれかを指定します。

  • インデックスキー仕様ドキュメントをdb.collection.hideIndex()メソッドに渡す追加操作

    db.restaurants.hideIndex( { borough: 1, ratings: 1 } ); // Specify the index key specification document
  • インデックス名をdb.collection.hideIndex()メソッドに渡すことで、

    db.restaurants.hideIndex( "borough_1_ratings_1" ); // Specify the index name

確認するには、 restaurantsコレクションでdb.collection.getIndexes()を実行します。

db.restaurants.getIndexes()

この操作では、次の情報が返されます。

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1",
"hidden" : true
}
]

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

非表示のインデックスを再表示するには、 collModコマンドまたはmongoshヘルパーdb.collection.unhideIndex()を使用できます。 次のいずれかを指定できます。

  • インデックスキー仕様ドキュメントをdb.collection.unhideIndex()メソッドに渡す追加操作

    db.restaurants.unhideIndex( { borough: 1, city: 1 } ); // Specify the index key specification document
  • インデックス名をdb.collection.unhideIndex()メソッドに渡すことで、

    db.restaurants.unhideIndex( "borough_1_ratings_1" ); // Specify the index name

確認するには、 restaurantsコレクションでdb.collection.getIndexes()を実行します。

db.restaurants.getIndexes()

この操作では、次の情報が返されます。

[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"borough" : 1,
"ratings" : 1
},
"name" : "borough_1_ratings_1"
}
]

インデックス オプションhiddenは、値がtrueの場合にのみ フィールドが返されるため、 borough_1_ratings_1インデックスの一部として表示されなくなりました。

インデックスは非表示の間で完全に維持されているため、非表示が解除されたらすぐに使用できるようになります。

戻る

大文字と小文字を区別しないインデックス