Los índices regulares de mongodb usan tanto el valor como el tipo de campo para construir el árbol.
Consultas como $empty: true o $ne: null no tiene un parámetro de ningún tipo y no puede beneficiarse de dichos índices. Es un caso especial y requiere un índice disperso
especial .
Si su example@sqldat.com_1 el índice se crea como:
db.getCollection('logs.res').createIndex(
{
"timeStamp" : -1,
"example@sqldat.com" : 1
},
{ sparse: true }
)
Debería respaldar mejor su consulta. De lo contrario, no hay mucha diferencia entre example@sqldat.com_1 y timeStamp_1_module_1_etc ya que el único primer campo está siendo utilizado.