Als ik je punt begrijp, kan dit helpen:
Ervan uitgaande dat u deze documenten als voorbeeld heeft
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Stap 1:u heeft alleen een index voor filed1 (naam van index field1_1 )}:voer de :db.test3.find({field1:1}).sort({field2:1})
uit
de mongo gebruikt field1_1 index om in het document te zoeken. het resultaat van .explain() is:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Stap 2:voeg uw samengestelde index toe, noem deze field1_1_field2_1 , nu heb je 2 indexen voor veld 1.
voer find().sort()
uit vraag, heb je
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Conclusie:
als u db.test3.find({field1:1}).sort({field2:1})
gebruikt , de mongo gebruikt field1_1_field2_1
index.
als u db.test3.find({field1:1})
. gebruikt , de mongo gebruikt field1_1
index.
Ik ben uw zaak, als u slechts field1_1_field2_1 . heeft index en u voert db.test3.find({field1:1})
uit , de mongo gebruikt field1_1_field2_1
index ook.