sql >> Database >  >> NoSQL >> MongoDB

Langzame bereikquery op een index met meerdere toetsen

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.




  1. Is het de beste manier van Java om datums zo lang in uw database op te slaan?

  2. Vraag mongodb naar voorwaardelijke voorwaarden

  3. Grote CSV's in MongoDB invoegen met Node.js en async.queue

  4. Gebruik van Hibernate OGM met cloud MongoDB Atlas M0 (Free Tier)