MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

$skip et $limit dans le cadre d'agrégation

Puisqu'il s'agit d'une requête de recherche de texte dont nous parlons, la forme la plus optimale est celle-ci :

db.collection.aggregate([
    { 
       "$match": {
               "$text": { "$search": "cake tea" }
    }
    },
    { "$sort": { "score": { "$meta": "textScore" } } },
    { "$limit": skip + limit },
    { "$skip": skip }
])

La justification de la réserve de mémoire à partir des résultats de "tri" supérieurs ne fonctionnera que dans ses propres "limites" pour ainsi dire et cela ne sera pas optimal pour quoi que ce soit au-delà de quelques "pages" raisonnables de données.

Au-delà de ce qui est raisonnable pour la consommation de mémoire, l'étape supplémentaire aura probablement un effet négatif plutôt que positif.

Ce sont vraiment les limitations pratiques des capacités de recherche de texte disponibles pour MongoDB sous la forme actuelle. Mais pour tout ce qui est plus détaillé et nécessitant plus de performances, comme c'est le cas avec de nombreuses solutions SQL "texte intégral", il vaut mieux utiliser une solution de recherche de texte externe "conçue à cet effet".