MongoDBに非表示のインデックスがある場合は、unhideIndex()
を使用できます。 メソッドまたはcollMod
それを再表示するための管理コマンド。
インデックスの例
pets
というコレクションのインデックスを見てみましょう。 :
db.pets.getIndexes()
結果:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "idx_weight_-1", "hidden" : true }, { "v" : 2, "hidden" : true, "key" : { "type" : 1 }, "name" : "type_1" } ]
3つのインデックスがあり、最後の2つは非表示になっていることがわかります。 "hidden" : true
があるので、これを知っています。 それらの定義で。
unhideIndexes()
を使用して再表示します 方法
インデックスを再表示する最初の方法は、db.collection.unhideIndex()
を使用することです。 方法。このメソッドは、インデックスの名前またはそのキーパターンをパラメーターとして受け入れ、再表示するインデックスを指定します。
例:
db.pets.unhideIndex("idx_weight_-1")
出力:
{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }
unhideIndex()
の出力 メソッドは、hidden
の古い値を表示します フィールド(この場合はtrue
)と新しい値(この場合はfalse
。
ただし、すでに非表示になっているインデックスを再表示する(またはすでに非表示になっているインデックスを非表示にする)と、これらは表示されず、次のようになります。
{ "ok" : 1 }
いずれの場合も、インデックスは非表示になりません。
unhideIndex()
メソッドはcollMod
のラッパーです 管理コマンド(下記)。
collMod
コマンド
collMod
管理コマンドを使用すると、コレクションにオプションを追加したり、ビュー定義を変更したりできます。
hidden: false
を渡すことで、インデックスを再表示するために使用できます。 :
例:
db.runCommand( {
collMod: "pets",
index: {
name: "type_1",
hidden: false
}
} )
結果:
{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }
これにより、unhideIndex()
と同じドキュメントが返されます。 戻ります。
unhideIndex()
に似ています 、インデックス名またはそのキーパターンを指定するオプションがあります。
キーパターンの使用例は次のとおりです。
db.runCommand( {
collMod: "pets",
index: {
keyPattern: { "type" : 1 },
hidden: false
}
} )
この場合、インデックスは{ "type" : 1 }
を使用して定義されました。 、したがって、この定義をインデックス名の代わりに使用できます。
変更を確認する
変更を確認するために、getIndexes()
を呼び出すことができます もう一度インデックスの定義を確認してください:
db.pets.getIndexes()
結果:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "idx_weight_-1" }, { "v" : 2, "key" : { "type" : 1 }, "name" : "type_1" } ]
予想どおり、両方のインデックスが非表示になっています。 hidden: true
を渡すことで、それらを再び非表示にすることもできます 。
インデックスを非表示/再表示できませんか?この設定を確認してください。
mongod
featureCompatibilityVersion
少なくとも4.4
である必要があります インデックスを非表示にする前に。ただし、一度非表示にすると、featureCompatibilityVersion
を使用してもインデックスは非表示のままになります MongoDB4.4バイナリでは4.2に設定されています。
featureCompatibilityVersion
を確認できます 次のコードで設定します:
db.adminCommand(
{
getParameter: 1,
featureCompatibilityVersion: 1
}
)
setFeatureCompatibilityVersion
を使用して設定できます コマンド:
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
setFeatureCompatibilityVersion
コマンドはadmin
で実行する必要があります データベース。
また、_id
を非表示にすることはできません。 インデックス。