MongoDBでは、dropIndexes()
メソッドを使用すると、コレクションから1つ以上のインデックスを削除できます。
単一のインデックスを削除するには、インデックスの名前またはその定義/仕様ドキュメントを渡します。テキストインデックスの場合は、インデックス名のみを指定できます。
複数のインデックスを削除するには、配列でインデックス名を渡します。
すべてのインデックスを削除するには(_id
を除く) インデックス)、引数を渡さないでください。
インデックスの例
pets
というコレクションがあるとします。 。 getIndexes()
を使用できます インデックスを確認するには:
db.pets.getIndexes()
結果:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "type" : 1 }, "name" : "type_1" }, { "v" : 2, "key" : { "name" : 1 }, "name" : "name_1", "hidden" : true }, { "v" : 2, "key" : { "weight" : -1 }, "name" : "weight_-1" } ]
この場合、4つのインデックスがあります。 1つ目は、_id
のデフォルトのインデックスです。 分野。このインデックスは、コレクションを作成すると自動的に作成され、削除することはできません。
他の3つのインデックスはできます ドロップされます。
単一のインデックスを削除する
単一のインデックスを削除するには、インデックス名またはその仕様書を渡します。
例:
db.pets.dropIndexes("weight_-1")
この場合、インデックス名を渡します。
これを実行すると、次の出力が得られます:
{ "nIndexesWas" : 4, "ok" : 1 }
これは、インデックスが削除されたことを示しています。
または、仕様書を渡すことでインデックスを削除することもできます:
db.pets.dropIndexes( { "weight" : -1 } )
複数のインデックスを削除する
すべてではなく複数のインデックスを削除する場合は、インデックス名を配列で渡します。
例:
db.pets.dropIndexes( [ "type_1", "name_1" ])
結果:
{ "nIndexesWas" : 3, "ok" : 1 }
この段階で、インデックスのリストを再確認しましょう。
db.pets.getIndexes()
結果:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
予想どおり、3つのインデックスが削除され、残りは1つだけです(削除できません)。
すべてのインデックスを削除
dropIndexes()
を呼び出すと、すべてのインデックスを削除できます。 引数のないメソッド。
この例では、products
というコレクションにインデックスをドロップしてみましょう。 。このコレクションには、次の4つのインデックスがあります。
db.products.getIndexes()
結果:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "product.$**" : 1 }, "name" : "product.$**_1" }, { "v" : 2, "key" : { "sizes" : 1 }, "name" : "sizes_1" }, { "v" : 2, "key" : { "stock" : -1 }, "name" : "stock_-1" } ]
それでは、すべてのインデックスを削除しましょう:
db.products.dropIndexes()
結果:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
メッセージがほのめかしているように、_id
を除くすべてのインデックスが削除されました 索引。このインデックスは削除できません。
インデックスをもう一度確認しましょう。
db.products.getIndexes()
結果:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
予想どおり、_id
残っているのはインデックスだけです。
dropIndexes()
メソッドはdropIndexes
のラッパーです コマンド。
MongoDBドキュメント
dropIndexes()
の詳細については、MongoDBのドキュメントを参照してください。 メソッド。