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を非表示にすることはできません。 インデックス。