Tak, ponieważ MongoDB z pewnością użyje indeksu _id (idhack
).
W drugiej metodzie - jak zauważyłeś - nie możesz stwierdzić, czy dla danego pola zostanie użyty indeks.
Więc odpowiedź będzie brzmiała:to zależy.
Jeśli Twoja kolekcja ma milion dokumentów lub więcej i/lub liczba pól wyszukiwania jest dość duża, powinieneś preferować pierwszą metodę wyszukiwania. Zwłaszcza jeśli rozmiar listy identyfikatorów nie jest mały i/lub wartości identyfikatorów sąsiadują ze sobą.
Jeśli Twoja kolekcja jest dość mała i możesz tolerować pełne skanowanie, możesz preferować drugie podejście.
W każdym razie powinieneś zeznawać obie metody za pomocą explain()
.