Czy możesz podać utworzony indeks złożony. Nie mam zbyt dobrej reputacji, więc nie mogę zadać tego w komentarzu. Ale mam możliwą odpowiedź na twoje pytanie. Mongo używa właściwości o nazwie „Equality-Sort-Range”, która zachowuje się w inny sposób. Rozważmy poniższą sytuację - Masz kilka dokumentów z polami {nazwa :ciąg, pin :numer sześciocyfrowy, SSN :numer dziewięciocyfrowy} i masz dwa indeksy jako - {nazwa:1, pin:1, ssn:1} i drugi indeks is {name:1, ssn :1, pin :1} teraz rozważ poniższe zapytania:
db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1})
To zapytanie użyje pierwszego indeksu, ponieważ mamy w kontynuacji indeks złożony. Nazwa, pin, ssn są w dalszej części.db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1})
Można się spodziewać, że w tym zapytaniu zostanie użyty pierwszy indeks. Ale zaskakująco indeks sekund zostanie użyty przez to zapytanie, ponieważ ma ono operację zakresu na pinie.
Właściwość Equality-sort-range mówi, że planer zapytań będzie lepiej używał indeksu pola, które służy - „equality-sort-range”. Drugie zapytanie ma zakres na pinie, więc zostanie użyty drugi indeks, podczas gdy pierwsze zapytanie ma równość we wszystkich polach, więc zostanie użyty pierwszy indeks.