MongoDB -liste alle indekser for en database

MongoDB -liste alle indekser for en database
Vi kan bruke ListIndexes -metoden for å hente alle indeksene i en gitt samling. Denne metoden er en databasekommando og støttes i språkspesifikk driver.

Kommandosyntaks er som vist i følgende:

db.RunCommand (

Listeindekser: "",
Markør: BatchSize: ,
kommentar:

)

De støttede parametrene er som følger:

  1. Collection_name - Angir navnet på målsamlingen som en strengtype.
  2. BatchSize - Angir batchstørrelsen for markøren.
  3. Kommentar - Brukerkommentar for den spesifiserte kommandoen.

Tenk på følgende eksempel på spørring:

db.RunCommand (ListIndexes: "Hulu")

Den gitte spørringen påkaller ListIndexes -kommandoen på "Hulu" -samlingen. Dette skal returnere alle indeksene for den spesifikke samlingen som vist i følgende utgang:


Markør:
ID: Lang ("0"),
NS: 'Entertainment.hulu ',
Første sats: [
V: 2, Key: _id: 1, navn: '_id_',

V: 2,
Nøkkel: Release_year: 1,
Navn: 'Release_year_index',
sparsom: falsk

]
,
OK: 1

Siden vi ikke spesifiserer batchstørrelsen for markøren, returnerer kommandoen alle resultatene fra ListIndexes -kommandoen.

For å bare vise ett resultat, kan vi stille parameteren for batchstørrelse til 1 som vist på følgende:

db.RunCommand (ListIndexes: "Hulu", markør: BatchSize: 1)

I dette tilfellet bør kommandoen returnere en utgang som vist på følgende:


Markør:
ID: Long ("6609474838031556340")),
NS: 'Entertainment.hulu ',
FirstBatch: [V: 2, Key: _id: 1, navn: '_id_']
,
OK: 1

Du kan øke batchstørrelsen for å få mer informasjon om indeksene i samlingen.

MongoDB viser alle indekser i en database

Anta at vi ønsker å vise alle indeksene i alle samlingene til en spesifisert database. For det kan vi bruke foreach -funksjonen til å iterere over hver samling i databasen og liste opp tilhørende indekser.

Et eksempel på spørring er som vist i følgende:

db.getCollectionNames ().foreach (funksjon (samling) all_indexes = db.getCollection (samling).listIndexes (); print ("Indekser av" + Collection + ":->"); Printjson (all_indexes); );

Den forrige spørringen starter med å hente alle samlingsnavnene i en gitt database ved hjelp av getCollectionNames () -metoden. Vi itererer deretter over hver samling i databasen og passerer dem som parametere for getIndexes () -metoden.

Til slutt lagrer vi hvert resultat i variabelen all_indexes. For å få en menneskelig lesbar output, bruker vi utskrifts- og Printjson -metodene for bedre formatering.

Dette skal returnere alle samlingene og deres tilsvarende indekser som vist i følgende:

[
V: 2, Key: _id: 1, navn: '_id_',

V: 2,
Nøkkel: _fts: 'tekst', _ftsx: 1,
Navn: 'Rating',
sparsom: falsk,
Vekter: Rangering: 1,
standard_language: 'engelsk',
Language_Override: 'Språk',
TextIndexversjon: 3

]
Indekser av Amazon_prime:->
[
V: 2, Key: _id: 1, navn: '_id_',

V: 2,
Nøkkel: _fts: 'tekst', _ftsx: 1,
Navn: 'Content_type',
sparsom: falsk,
Vekter: type: 1,
standard_language: 'engelsk',
Language_Override: 'Språk',
TextIndexversjon: 3

]
Indekser av Hulu:->
[
v: 2, nøkkel: _id: 1, navn: '_id_',

V: 2,
Nøkkel: Release_year: 1,
Navn: 'Release_year_index',
sparsom: falsk

]

I vårt eksempel har vi tre samlinger, hver med en indeks som vist i forrige utgangsarray.

Konklusjon

I dette innlegget diskuterte vi hvordan du bruker listindexes () -metoden for å få listen over alle indekser i en gitt samling. Vi diskuterte også hvordan du lager et enkelt manus for å få alle indeksene og tilhørende samlingen i en gitt database.

Glad koding!