sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB dropIndex()

I MongoDB er dropIndexes() metode giver dig mulighed for at slette et eller flere indekser fra en samling.

For at slette et enkelt indeks skal du videregive navnet på indekset eller dets definitions-/specifikationsdokument. Hvis det er et tekstindeks, kan du kun angive indeksnavnet.

For at slette flere indekser skal du videregive indeksnavnene i en matrix.

For at slette alle indekser (undtagen _id). indeks), ikke videregive nogen argumenter.

Eksempler på indekser

Antag, at vi har en samling kaldet pets . Vi kan bruge getIndexes() for at se, hvilke indekser den har:

db.pets.getIndexes()

Resultat:

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

I dette tilfælde har vi fire indekser. Den første er standardindekset for _id Mark. Dette indeks oprettes automatisk, når du opretter en samling, og det kan ikke slettes.

De tre andre indekser kan blive droppet.

Slip et enkelt indeks

For at slette et enkelt indeks skal du sende indeksnavnet eller dets specifikationsdokument.

Eksempel:

db.pets.dropIndexes("weight_-1")

I dette tilfælde videregiver vi indeksnavnet.

Kørsel, der resulterer i følgende output:

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

Dette fortæller os, at indekset blev droppet.

Alternativt kunne vi have droppet indekset ved at sende dets specifikationsdokument:

db.pets.dropIndexes( { "weight" : -1 } )

Slet flere indekser

Hvis du vil slette flere indekser, men ikke alle indekser, skal du sende indeksnavnene i en matrix.

Eksempel:

db.pets.dropIndexes( [ "type_1", "name_1" ])

Resultat:

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

Lad os på dette stadium gentjekke vores liste over indekser:

db.pets.getIndexes()

Resultat:

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

Som forventet er tre indeks blevet slettet, og der er kun ét tilbage (og det kan ikke slettes).

Slet alle indekser

Du kan droppe alle indekser ved at kalde dropIndexes() metode uden nogen argumenter.

For dette eksempel, lad os slippe indekserne på en samling kaldet products . Denne samling har fire indekser som følger:

db.products.getIndexes()

Resultat:

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

Lad os nu droppe alle indekser:

db.products.dropIndexes()

Resultat:

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

Som meddelelsen hentydede til, blev alle indekser slettet undtagen _id indeks. Dette indeks kan ikke slettes.

Lad os tjekke indekserne igen.

db.products.getIndexes()

Resultat:

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

Som forventet, _id indeks er den eneste tilbage.

dropIndexes() metoden er en indpakning omkring dropIndexes kommando.

MongoDB-dokumentation

Se MongoDB-dokumentationen for mere information om dropIndexes() metode.


  1. Sådan rettes advarslerne, når du kører Redis:alpine Docker-billedet

  2. MongoDB starter ikke efter servernedbrud

  3. mongodb 3.4.3 Tilladelse nægtet widtiger_kv_engine.cpp 267 fejl med ubuntu 16

  4. Forbinder MongoDB til Ruby med selvsignerede certifikater til SSL