Elenco mongodb tutti gli indici per un database

Elenco mongodb tutti gli indici per un database
Possiamo utilizzare il metodo ListIndexes per recuperare tutti gli indici in una determinata raccolta. Questo metodo è un comando di database ed è supportato nel driver specifico per la lingua.

La sintassi del comando è come mostrata nella seguente:

db.runCommand (

ListIndexes: "",
cursore: batchsize: ,
commento:

)

I parametri supportati sono i seguenti:

  1. collection_name - Specifica il nome della raccolta di destinazione come tipo di stringa.
  2. BatchSize - Specifica la dimensione del batch per il cursore.
  3. Commento - Commento dell'utente per il comando specificato.

Considera la seguente query di esempio:

db.RunCommand (listIndexes: "Hulu")

La query data invoca il comando ListIndexes sulla raccolta "Hulu". Ciò dovrebbe restituire tutti gli indici per la raccolta specifica come mostrato nella seguente uscita:


cursore:
ID: Long ("0"),
NS: 'Entertainment.Hulu ',
primo lotto: [
v: 2, chiave: _id: 1, nome: '_id_',

V: 2,
Chiave: rilascio_year: 1,
Nome: 'Release_year_index',
Sparse: falso

"
,
OK: 1

Poiché non specifichiamo la dimensione del batch per il cursore, il comando restituisce tutti i risultati del comando ListIndexes.

Per mostrare un solo risultato, possiamo impostare il parametro batchSize su 1 come mostrato nel seguente:

db.RunCommand (ListIndexes: "Hulu", Cursor: BatchSize: 1)

In questo caso, il comando dovrebbe restituire un output come mostrato nel seguente:


cursore:
ID: Long ("6609474838031556340"),
NS: 'Entertainment.Hulu ',
FirstBatch: [V: 2, Key: _id: 1, nome: '_id_']
,
OK: 1

È possibile aumentare il batchsize per ottenere maggiori informazioni sugli indici nella raccolta.

MongoDB mostra tutti gli indici in un database

Supponiamo di voler mostrare tutti gli indici in tutte le raccolte di un database specificato. Per questo, possiamo utilizzare la funzione foreach per iterare su ciascuna raccolta nel database ed elencare i suoi indici corrispondenti.

Una query di esempio è come mostrato nella seguente:

db.getCollectionNames ().foreach (function (raccolta) all_indexes = db.getCollection (collezione).listIndexes (); print ("indici di" + collezione + ":->"); printjson (all_indexes); );

La query precedente inizia recuperando tutti i nomi di raccolta in un determinato database utilizzando il metodo getCollectionNames (). Quindi ripetiamo ogni raccolta nel database e li passiamo come parametri del metodo getIndexes ().

Infine, salviamo ogni risultato nella variabile All_Indexes. Per ottenere un output leggibile dall'uomo, utilizziamo i metodi stampati e stampati per una migliore formattazione.

Ciò dovrebbe restituire tutte le raccolte e i loro indici corrispondenti come mostrato nei seguenti:

[
v: 2, chiave: _id: 1, nome: '_id_',

V: 2,
Chiave: _fts: 'text', _ftsx: 1,
Nome: "valutazione",
Sparse: falso,
pesi: valutazione: 1,
Default_Language: 'English',
lingua_override: "lingua",
TextIndexversion: 3

"
Indici di Amazon_prime:->
[
v: 2, chiave: _id: 1, nome: '_id_',

V: 2,
Chiave: _fts: 'text', _ftsx: 1,
Nome: 'content_type',
Sparse: falso,
pesi: type: 1,
Default_Language: 'English',
lingua_override: "lingua",
TextIndexversion: 3

"
Indici di hulu:->
[
v: 2, chiave: _id: 1, nome: '_id_',

V: 2,
Chiave: rilascio_year: 1,
Nome: 'Release_year_index',
Sparse: falso

"

Nel nostro esempio, abbiamo tre raccolte, ognuna con un indice come mostrato nell'array di output precedente.

Conclusione

In questo post, abbiamo discusso di come utilizzare il metodo ListIndexes () per ottenere l'elenco di tutti gli indici in una determinata raccolta. Abbiamo anche discusso di come creare un semplice script per ottenere tutti gli indici e la loro raccolta associata in un determinato database.

Codice felice!