Vous devez exécuter explain
par rapport à votre requête, cela vous aidera à comprendre ce qui se passe.
Il est probable que Mongo n'utilise pas d'index pour le filtrage et le tri. Lorsque vous utilisez un $or
, il peut utiliser plusieurs index pour faire correspondre les options. Mais lorsque vous ajoutez un sort
cela peut l'empêcher d'utiliser les index disponibles pour le filtrage.
Lorsque vous souhaitez effectuer un tri sur une requête, vous devez vous assurer que le champ trié se trouve dans l'index que vous souhaitez atteindre (dernier, sinon il ne peut pas l'utiliser pour trier).
Vous pourrez peut-être également l'accélérer en passant une indication d'index. Je ne sais pas combien de documents votre requête correspond, mais si c'est un petit nombre et que vous vous assurez que les conditions initiales atteignent un index, le tri sur _id
peut être fait rapidement.