Les index mongodb réguliers utilisent à la fois la valeur et le type du champ pour construire l'arborescence.
Requêtes telles que $empty: true ou $ne: null n'ont pas de paramètre d'aucun type et ne peuvent pas bénéficier de tels index. C'est un cas particulier et nécessite un sparse index
spécial .
Si votre example@sqldat.com_1 index est créé comme :
db.getCollection('logs.res').createIndex(
{
"timeStamp" : -1,
"example@sqldat.com" : 1
},
{ sparse: true }
)
Il devrait mieux répondre à votre requête. Sinon, il n'y a pas beaucoup de différence entre example@sqldat.com_1 et timeStamp_1_module_1_etc puisque seul le premier champ est utilisé.