Om jag förstår din poäng kan det här hjälpa:
Förutsatt att du har dessa dokument som exempel
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Steg 1:du har index bara för filed1 (namn på index fält1_1 )}:utför :db.test3.find({field1:1}).sort({field2:1})
mongon använder fält1_1 indexera för att söka i dokument. resultatet av .explain() är:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Steg 2:lägg till ditt sammansatta index, döp det till fält1_1_fält2_1 , nu har du 2 index för fält 1.
utför find().sort()
fråga kommer du att ha
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Slutsats:
om du använder db.test3.find({field1:1}).sort({field2:1})
, kommer mongon att använda field1_1_field2_1
index.
om du använder db.test3.find({field1:1})
, kommer mongon att använda field1_1
index.
I ditt fall, om du bara har field1_1_field2_1 index och du utför db.test3.find({field1:1})
, kommer mongon att använda field1_1_field2_1
index också.