Latest web development tutorials

MongoDB zaawansowane indeksowanie

Rozważmy następujący dokument Kolekcje (użytkowników):

{
   "address": {
      "city": "Los Angeles",
      "state": "California",
      "pincode": "123"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "Tom Benzamin"
}

Powyższy dokument zawiera sub-dokumentów i zająć tablicę tagów.


Indeksowane pola tablicy

Załóżmy pobierzemy etykietę użytkownika opartego na które musimy indeksu kolekcji znaczników tablicy.

Tworzenie indeksu w tablicy, tablica potrzeb dla każdego pola kolei indeksowane. Kiedy więc utworzyć indeks dla znaczników tablicy, będzie dostarczać muzykę, krykiet, blogi trzy wartości ustanowienie oddzielnego indeksu.

Tworzenie indeksu tablicy, należy użyć następującego polecenia:

>db.users.ensureIndex({"tags":1})

Po utworzeniu indeksu, możemy pobrać kolekcję pola tagi:

>db.users.find({tags:"cricket"})

Zwykliśmy sprawdzenie wykorzystania indeksu, można użyć polecenia wyjaśnić:

>db.users.find({tags:"cricket"}).explain()

Wyniki powyższego polecenia pokaże "kursor": "BtreeCursor tags_1", to powiedział indeks został wykorzystany.


Wskaźnik pola sub-dokument

Załóżmy, że chcemy miasto, województwo, pole kod PIN do pobierania dokumentów, gdyż pola te są polami dokument podrzędny, więc musimy indeksowanie dokument podrzędny.

Tworzenie indeksu dla trzech podpól dokumentu, polecenie jest następujące:

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

Po utworzeniu indeksu, możemy skorzystać z boiska do pobierania danych sub-dokumentów:

>db.users.find({"address.city":"Los Angeles"})   

Pamiętaj wyrażenie kwerendy należy przestrzegać kolejności określonego indeksu. Więc indeks tworzony przede będzie wspierał następujące zapytanie:

>db.users.find({"address.city":"Los Angeles","address.state":"California"}) 

Obsługuje również następujące zapytanie:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})