MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB dropIndexes Polecenie

MongoDB ma polecenie administracyjne o nazwie dropIndexes który upuszcza jeden lub więcej indeksów (z wyjątkiem indeksu w _id pole) z określonej kolekcji.

Przykładowe indeksy

Załóżmy, że mamy kolekcję o nazwie posts z następującymi indeksami:

db.pets.getIndexes()

Wynik:

[
	{
		"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
	}
]

W tym przypadku mamy cztery indeksy. Pierwszy to domyślny indeks dla _id pole. Ten indeks jest tworzony automatycznie podczas tworzenia kolekcji i nie można go usunąć.

Pozostałe trzy indeksy można usunąć.

Upuść pojedynczy indeks

Aby usunąć pojedynczy indeks, przekaż nazwę kolekcji, a także nazwę indeksu lub dokument specyfikacji.

Przykład:

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

W tym przypadku przekazujemy nazwę indeksu.

Uruchomienie tego skutkuje następującymi danymi wyjściowymi:

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

To mówi nam, że indeks został usunięty.

Alternatywnie moglibyśmy użyć dokumentu specyfikacji indeksu zamiast jego nazwy, w ten sposób:

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

Upuść wiele indeksów

Jeśli chcesz usunąć wiele indeksów (ale nie wszystkie .) indeksy), przekaż nazwy indeksów w tablicy.

Przykład:

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

Wynik:

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

Na tym etapie sprawdźmy ponownie naszą listę indeksów:

db.posts.getIndexes()

Wynik:

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

Zgodnie z oczekiwaniami, trzy indeksy zostały usunięte, a pozostał tylko jeden (i nie można go usunąć).

Podczas przekazywania tablicy indeksy tekstowe można usunąć tylko przez określenie nazwy indeksu. W takich przypadkach nie można usunąć indeksów tekstowych, określając ich dokument specyfikacji, tak jak w przypadku innych indeksów.

Upuść wszystkie indeksy

Możesz usunąć wszystkie indeksy za pomocą symbolu wieloznacznego gwiazdki (* ).

W tym przykładzie odtworzyłem indeksy. Indeksy wyglądają więc tak:

db.products.getIndexes()

Wynik:

[
	{
		"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
	}
]

Teraz odrzućmy wszystkie indeksy na raz:

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

Wynik:

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

Wszystkie indeksy zostały usunięte z wyjątkiem _id indeks (ten indeks nie może zostać usunięty).

Sprawdźmy jeszcze raz indeksy.

db.products.getIndexes()

Wynik:

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

Zgodnie z oczekiwaniami _id indeks jest jedynym, który pozostaje.

Dokumentacja MongoDB

Zobacz dokumentację MongoDB, aby uzyskać więcej informacji na temat dropIndexes polecenie.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak zagregować sumę w MongoDB, aby uzyskać całkowitą liczbę?

  2. Zastępowanie osadzonego dokumentu w tablicy w MongoDB

  3. C# MongoDB Distinct Składnia zapytań

  4. Różnica między polami id i _id w MongoDB

  5. Dlaczego MongoDB jest tak szybki