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

MongoDB dropIndexes команда

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

Примерни индекси

Да предположим, че имаме колекция, наречена posts със следните индекси:

db.pets.getIndexes()

Резултат:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1
		},
		"name" : "title_1"
	},
	{
		"v" : 2,
		"key" : {
			"tags" : 1
		},
		"name" : "tags_1"
	},
	{
		"v" : 2,
		"key" : {
			"_fts" : "text",
			"_ftsx" : 1
		},
		"name" : "body_text",
		"weights" : {
			"body" : 1
		},
		"default_language" : "english",
		"language_override" : "language",
		"textIndexVersion" : 3
	}
]

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

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

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

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

Пример:

db.runCommand( { dropIndexes: "posts", index: "title_1" })

В този случай предаваме името на индекса.

Изпълнението на това води до следния изход:

{ "nIndexesWas" : 4, "ok" : 1 } 

Това ни казва, че индексът е отпаднал.

Като алтернатива бихме могли да използваме документа със спецификация на индекса вместо неговото име, както следва:

db.runCommand( { dropIndexes: "posts", index: { "title" : 1 } })

Изпускане на множество индекси

Ако искате да премахнете множество индекси (но не всички индекси), предайте имената на индекси в масив.

Пример:

db.runCommand( { 
  dropIndexes: "posts", 
  index: [ "tags_1", "body_text" ] 
})

Резултат:

{ "nIndexesWas" : 3, "ok" : 1 }

На този етап нека да проверим отново нашия списък с индекси:

db.posts.getIndexes()

Резултат:

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ] 

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

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

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

Можете да премахнете всички индекси, като използвате заместващия знак на звездичка (* ).

За този пример създадох отново индексите. Индексите изглеждат така::

db.products.getIndexes()

Резултат:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1
		},
		"name" : "title_1"
	},
	{
		"v" : 2,
		"key" : {
			"tags" : 1
		},
		"name" : "tags_1"
	},
	{
		"v" : 2,
		"key" : {
			"_fts" : "text",
			"_ftsx" : 1
		},
		"name" : "body_text",
		"weights" : {
			"body" : 1
		},
		"default_language" : "english",
		"language_override" : "language",
		"textIndexVersion" : 3
	}
]

Сега нека пуснем всички индекси наведнъж:

db.runCommand( { dropIndexes: "posts", index: "*" })

Резултат:

{
	"nIndexesWas" : 4,
	"msg" : "non-_id indexes dropped for collection",
	"ok" : 1
}

Всички индекси бяха премахнати с изключение на _id индекс (този индекс не може да бъде отхвърлен).

Нека отново проверим индексите.

db.products.getIndexes()

Резултат:

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]

Както се очакваше, _id индексът е единственият, който остава.

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изберете Групиране по брой и отделен брой в същата заявка за mongodb

  2. MongoDb:Предимство от използването на ObjectID спрямо низ, съдържащ идентификатор?

  3. Mongodb, намерете дали колекцията е празна, node.js

  4. 7 начина да проверите вашата версия на MongoDB

  5. В MongoDB mapreduce, как мога да изгладя обекта със стойности?