Si j'ai compris votre point de vue, ceci pourrait aider :
En supposant que vous ayez ces documents pour exemple
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Étape 1 :vous avez un index uniquement pour filed1 (nom de l'index field1_1 )} :effectuer le :db.test3.find({field1:1}).sort({field2:1})
le mongo utilise field1_1 index pour rechercher dans le document. le résultat de .explain() est :
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Étape 2 :ajoutez votre index composé, nommez-le field1_1_field2_1 , vous avez maintenant 2 index pour le champ 1.
effectuer find().sort()
requête, vous aurez
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Conclusion :
si vous utilisez db.test3.find({field1:1}).sort({field2:1})
, le mongo utilisera field1_1_field2_1
indice.
si vous utilisez db.test3.find({field1:1})
, le mongo utilisera field1_1
indice.
Dans votre cas, si vous avez juste field1_1_field2_1 index et vous effectuez db.test3.find({field1:1})
, le mongo utilisera field1_1_field2_1
index également.