Ако разбрах мисълта ви, това може да помогне:
Ако приемем, че имате тези документи за проба
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Стъпка 1:имате индекс само за filed1 (име на индекс field1_1 )}:изпълнете :db.test3.find({field1:1}).sort({field2:1})
mongo използва field1_1 индекс за търсене в документа. резултатът от .explain() е:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Стъпка 2:добавете своя съставен индекс, наименувайте го field1_1_field2_1 , сега имате 2 индекса за поле 1.
изпълнете find().sort()
заявка, ще имате
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Заключение:
ако използвате db.test3.find({field1:1}).sort({field2:1})
, mongo ще използва field1_1_field2_1
индекс.
ако използвате db.test3.find({field1:1})
, mongo ще използва field1_1
индекс.
Аз вашият случай, ако имате само field1_1_field2_1 индекс и изпълнявате db.test3.find({field1:1})
, mongo ще използва field1_1_field2_1
както и индекс.