Mijn antwoord gevonden in deze vraag:Orde van $lt en $gt in MongoDB-bereikquery
Mijn index is een index met meerdere toetsen (op tags
) en ik voer een bereikquery uit (op post_time
). Blijkbaar
, MongoDB kan in dit geval niet beide zijden van het bereik als filter gebruiken, dus kiest het gewoon de $gte
clausule, die eerst komt. Aangezien mijn ondergrens toevallig de laagste post_time
is waarde, MongoDB begint met het scannen van alle objecten.
Helaas is dit niet het hele verhaal. Om het probleem op te lossen, heb ik ook niet-multikey-indexen gemaakt, maar MongoDB stond erop de slechte te gebruiken. Daardoor dacht ik dat het probleem ergens anders zat. Ten slotte moest ik de multikey-index laten vallen en er een maken zonder de tags
veld. Alles is nu in orde.