Si entendí tu punto, esto podría ayudar:
Suponiendo que tenga estos documentos para la muestra
{
field1 : 1,
field2 : 2,
},
{
field1 : 2,
field2 : 3,
},
{
field1 : 1,
field2 : 4,
}
Paso 1:tienes un índice solo para archivado1 (nombre del índice field1_1 )}:realice:db.test3.find({field1:1}).sort({field2:1})
el mongo usa field1_1 índice para buscar en el documento. el resultado de .explain() es:
"cursor" : "BtreeCursor field1_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Paso 2:agregue su índice compuesto, asígnele el nombre field1_1_field2_1 , ahora tiene 2 índices para el campo 1.
ejecutar find().sort()
consulta, tendrás
"cursor" : "BtreeCursor field1_1_field2_1",
"isMultiKey" : false,
"n" : 2,
"nscannedObjects" : 2,
"nscanned" : 2,
Conclusión:
si usa db.test3.find({field1:1}).sort({field2:1})
, mongo usará field1_1_field2_1
índice.
si usa db.test3.find({field1:1})
, mongo usará field1_1
índice.
Yo tu caso, si tienes solo field1_1_field2_1 index y está realizando db.test3.find({field1:1})
, mongo usará field1_1_field2_1
índice también.