Gli indici mongodb regolari utilizzano sia il valore del campo che il tipo per costruire l'albero.
Query come $empty: true o $ne: null non hanno un parametro di alcun tipo e non possono beneficiare di tali indici. È un caso speciale e richiede uno speciale indice sparso
.
Se il tuo example@sqldat.com_1 l'indice viene creato come:
db.getCollection('logs.res').createIndex(
{
"timeStamp" : -1,
"example@sqldat.com" : 1
},
{ sparse: true }
)
Dovrebbe supportare al meglio la tua query. Altrimenti non c'è molta differenza tra example@sqldat.com_1 e timeStamp_1_module_1_etc poiché viene utilizzato l'unico primo campo.