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

2 måder at vise et indeks i MongoDB

Hvis du har et skjult indeks i MongoDB, kan du bruge unhideIndex() metoden eller collMod administrationskommando for at vise det.

Eksempler på indekser

Lad os tage et kig på indekserne på en samling kaldet pets :

db.pets.getIndexes()

Resultat:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"weight" : -1
		},
		"name" : "idx_weight_-1",
		"hidden" : true
	},
	{
		"v" : 2,
		"hidden" : true,
		"key" : {
			"type" : 1
		},
		"name" : "type_1"
	}
]

Vi kan se, at der er tre indekser, og de sidste to er skjulte. Vi ved dette, fordi de har "hidden" : true i deres definition.

Få vist ved hjælp af unhideIndexes() Metode

Den første måde at vise et indeks på er at bruge db.collection.unhideIndex() metode. Denne metode accepterer navnet på indekset eller dets nøglemønster som en parameter for at angive, hvilket indeks der skal vises.

Eksempel:

db.pets.unhideIndex("idx_weight_-1")

Output:

{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }

Outputtet af unhideIndex() metoden viser den gamle værdi for hidden felt (i dette tilfælde true ) og den nye værdi (i dette tilfælde false ).

Men hvis vi viser et allerede skjult indeks (eller skjuler et allerede skjult), vises disse ikke, og vi får bare følgende:

{ "ok" : 1 }

Under alle omstændigheder er indekset nu skjult.

unhideIndex() metoden er en indpakning for collMod administrationskommando (nedenfor).

collMod Kommando

collMod administrationskommando gør det muligt for os at tilføje muligheder til en samling eller at ændre visningsdefinitioner.

Vi kan bruge det til at vise et indeks ved at sende hidden: false :

Eksempel:

db.runCommand( {
   collMod: "pets",
   index: {
      name: "type_1",
      hidden: false
   }
} )

Resultat:

{ "hidden_old" : true, "hidden_new" : false, "ok" : 1 }

Dette returnerer det samme dokument som unhideIndex() vender tilbage.

Svarende til unhideIndex() , har du mulighed for at angive indeksnavnet eller dets nøglemønster.

Her er et eksempel på brug af nøglemønsteret:

db.runCommand( {
   collMod: "pets",
   index: {
      keyPattern: { "type" : 1 },
      hidden: false
   }
} )

I dette tilfælde blev indekset defineret ved hjælp af { "type" : 1 } , og derfor kan denne definition bruges i stedet for indeksnavnet.

Bekræft ændringerne

For at bekræfte vores ændringer kan vi kalde getIndexes() igen for at se indeksets definition:

db.pets.getIndexes()

Resultat:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"weight" : -1
		},
		"name" : "idx_weight_-1"
	},
	{
		"v" : 2,
		"key" : {
			"type" : 1
		},
		"name" : "type_1"
	}
]

Som forventet er begge indekser blevet skjult. Vi kan også skjule dem igen ved at sende hidden: true .

Kan du ikke skjule/vise indekser? Tjek denne indstilling.

mongod featureCompatibilityVersion skal være mindst 4.4 før du kan skjule indekser. Men når et indeks først er skjult, forbliver det skjult selv med featureCompatibilityVersion sat til 4.2 på MongoDB 4.4 binære filer.

Du kan tjekke featureCompatibilityVersion indstilling med følgende kode:

db.adminCommand( 
    { 
        getParameter: 1, 
        featureCompatibilityVersion: 1 
    } 
)

Du kan indstille det ved hjælp af setFeatureCompatibilityVersion kommando:

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

setFeatureCompatibilityVersion kommandoen skal køres i admin database.

Bemærk også, at du ikke kan skjule _id indeks.


  1. Future of Hadoop – Løn og jobforudsigelser i Big Data-analyse

  2. Node Js:Redis-jobbet er ikke afsluttet efter at have afsluttet sin opgave

  3. MongoDB - Fejl:kommandoen getMore mislykkedes:Markøren blev ikke fundet

  4. SSL-forbindelse til Redis med StackExchange.Redis