sql >> データベース >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

    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のドキュメントを参照してください。 メソッド。


    1. マングースモデルが新しくなったときにObjectIdを自動生成する方法はありますか?

    2. Mongo Find()関数は_idを除外しません

    3. 永続的なセッションを維持するためのMemcachev/ s redis?

    4. MongodbホットフィックスKB2731284