Se eu entendi seu ponto, isso pode ajudar:
Supondo que você tenha esses documentos para amostra
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Etapa 1:você tem um índice apenas para filed1 (nome do índice campo1_1 )}:execute o :
db.test3.find({field1:1}).sort({field2:1})
o mongo usa field1_1 índice para pesquisar no documento. o resultado de .explain() é:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Etapa 2:adicione seu índice composto, nomeie-o field1_1_field2_1 , agora você tem 2 índices para o campo 1.
execute
find().sort()
consulta, você terá "cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Conclusão:
se você usar
db.test3.find({field1:1}).sort({field2:1})
, o mongo usará field1_1_field2_1
índice. se você usar
db.test3.find({field1:1})
, o mongo usará field1_1
índice. No seu caso, se você tiver apenas field1_1_field2_1 index e você está executando
db.test3.find({field1:1})
, o mongo usará field1_1_field2_1
índice também.