Jeśli rozumiem, może to pomóc:
Zakładając, że masz te dokumenty do próbki
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Krok 1:masz indeks tylko dla filed1 (nazwa indeksu pole1_1 )}:wykonaj :db.test3.find({field1:1}).sort({field2:1})
mongo używa field1_1 indeks do wyszukiwania w dokumencie. wynik .explain() to:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Krok 2:dodaj indeks złożony, nazwij go field1_1_field2_1 , teraz masz 2 indeksy dla pola 1.
wykonaj find().sort()
zapytanie, będziesz miał
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Wniosek:
jeśli używasz db.test3.find({field1:1}).sort({field2:1})
, mongo użyje field1_1_field2_1
indeks.
jeśli używasz db.test3.find({field1:1})
, mongo użyje field1_1
indeks.
W twoim przypadku, jeśli masz tylko field1_1_field2_1 indeks i wykonujesz db.test3.find({field1:1})
, mongo użyje field1_1_field2_1
indeks.