MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB dropIndexes()

В MongoDB, dropIndexes() методът ви позволява да премахнете един или повече индекси от колекция.

За да премахнете единичен индекс, предайте името на индекса или документа за неговата дефиниция/спецификация. Ако е текстов индекс, можете да посочите само името на индекса.

За да премахнете множество индекси, предайте имената на индекси в масив.

За да премахнете всички индекси (с изключение на _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"
	}
]

В този случай имаме четири индекса. Първият е индексът по подразбиране за _id поле. Този индекс се създава автоматично, когато създавате колекция, и не може да бъде изхвърлен.

Останалите три индекса могат бъде отхвърлен.

Пуснете единичен индекс

За да пуснете един индекс, предайте името на индекса или неговия спецификационен документ.

Пример:

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_" } ]

Както се очакваше, три индекса бяха изтрити и остана само един (и не може да бъде изтрит).

Изхвърлете всички индекси

Можете да премахнете всички индекси, като извикате dropIndexes() метод без никакви аргументи.

За този пример нека пуснем индексите в колекция, наречена products . Тази колекция има четири индекса, както следва:

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 index е единственият останал.

dropIndexes() методът е обвивка около dropIndexes команда.

Документация на MongoDB

Вижте документацията на MongoDB за повече информация относно dropIndexes() метод.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:намиране на най-високата числова стойност на колона

  2. Множество броя с една заявка в mongodb

  3. MongoDB $ pull

  4. Монго сортиране при изчислено условие

  5. Търсене на агрегиране на Mongodb с условия