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

2 sposoby na odkrycie indeksu w MongoDB

Jeśli masz ukryty indeks w MongoDB, możesz użyć unhideIndex() metoda lub collMod polecenie administracyjne, aby go odkryć.

Przykładowe indeksy

Rzućmy okiem na indeksy w kolekcji o nazwie pets :

db.pets.getIndexes()

Wynik:

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

Widzimy, że są trzy indeksy, a ostatnie dwa są ukryte. Wiemy to, ponieważ mają "hidden" : true w ich definicji.

Odkryj za pomocą unhideIndexes() Metoda

Pierwszym sposobem na odkrycie indeksu jest użycie db.collection.unhideIndex() metoda. Ta metoda akceptuje nazwę indeksu lub jego wzorzec klucza jako parametr określający indeks do odkrycia.

Przykład:

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

Wyjście:

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

Wyjście unhideIndex() metoda wyświetla starą wartość dla hidden pole (w tym przypadku true ) i nową wartość (w tym przypadku false ).

Jeśli jednak odkryjemy już nieukryty indeks (lub ukryjemy już ukryty), nie są one wyświetlane i otrzymujemy tylko:

{ "ok" : 1 }

W każdym razie indeks jest teraz nieukryty.

unhideIndex() metoda jest opakowaniem dla collMod polecenie administracyjne (poniżej).

collMod Polecenie

collMod Polecenie administracyjne pozwala nam dodawać opcje do kolekcji lub modyfikować definicje widoków.

Możemy go użyć do odkrycia indeksu, przekazując hidden: false :

Przykład:

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

Wynik:

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

Zwraca ten sam dokument co unhideIndex() powraca.

Podobne do unhideIndex() , masz możliwość określenia nazwy indeksu lub jego wzorca klucza.

Oto przykład użycia wzorca klucza:

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

W tym przypadku indeks został zdefiniowany za pomocą { "type" : 1 } , więc ta definicja może być używana zamiast nazwy indeksu.

Zweryfikuj zmiany

Aby zweryfikować nasze zmiany, możemy wywołać getIndexes() ponownie, aby zobaczyć definicję indeksu:

db.pets.getIndexes()

Wynik:

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

Zgodnie z oczekiwaniami oba indeksy zostały ujawnione. Możemy je również ponownie ukryć, podając hidden: true .

Nie możesz ukryć/odkryć indeksów? Sprawdź to ustawienie.

mongod featureCompatibilityVersion musi mieć co najmniej 4.4 zanim będzie można ukryć indeksy. Jednak po ukryciu indeks pozostanie ukryty nawet w przypadku featureCompatibilityVersion ustawiony na 4.2 w plikach binarnych MongoDB 4.4.

Możesz sprawdzić featureCompatibilityVersion ustawienie z następującym kodem:

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

Możesz to ustawić za pomocą setFeatureCompatibilityVersion polecenie:

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

setFeatureCompatibilityVersion polecenie musi być uruchomione w admin baza danych.

Pamiętaj też, że nie możesz ukryć _id indeks.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak filtrować tablicę w poddokumencie za pomocą MongoDB?

  2. Wdrażanie i konserwacja MongoDB przy użyciu Ansible

  3. Jak zautomatyzować i zarządzać MongoDB za pomocą ClusterControl

  4. Przetestuj pusty ciąg w mongodb i pymongo

  5. Node.js + MongoDB:wstaw jeden i zwróć nowo wstawiony dokument