MongoDBPytanie 04 z 8
Wyszukiwanie w dużej kolekcji
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Zaczynam od rzeczywistego zapytania i planu wykonania. Indeks powinien wspierać jego filtry oraz sortowanie.
JavaScript
db.orders.createIndex({ customerId: 1, createdAt: -1 });
db.orders.find({ customerId: 'u1' })
.sort({ createdAt: -1 }).limit(20)
.explain('executionStats');Sprawdzam: liczbę zwróconych wyników względem przejrzanych dokumentów i kluczy, skan kolekcji oraz koszt sortowania.
Praktycznie: ograniczam zwracane pola, używam rozsądnej paginacji; przy dużych offsetach rozważam kursor po indeksowanym kluczu.
Pułapka: indeksy kosztują pamięć, miejsce i czas zapisu. Nie tworzę indeksu na każdym polu ani nie zakładam, że każdy regex go efektywnie wykorzysta.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.