Pokud jsem pochopil váš názor, mohlo by vám pomoci toto:
Za předpokladu, že máte tyto dokumenty pro ukázku
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Krok 1:máte index pouze pro filed1 (název indexu pole1_1 )}:proveďte :db.test3.find({field1:1}).sort({field2:1})
mongo používá pole1_1 index pro vyhledávání v dokumentu. výsledek .explain() je:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Krok 2:Přidejte svůj složený index, pojmenujte jej pole1_1_pole2_1 , nyní máte 2 index pro pole 1.
provést find().sort()
dotaz, budete mít
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Závěr:
pokud používáte db.test3.find({field1:1}).sort({field2:1})
, mongo použije field1_1_field2_1
index.
pokud používáte db.test3.find({field1:1})
, mongo použije field1_1
index.
Ve vašem případě, pokud máte pouze pole1_1_pole2_1 index a provádíte db.test3.find({field1:1})
, mongo použije field1_1_field2_1
index také.