MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

$skip e $limit na estrutura de agregação


Como estamos falando de uma consulta de pesquisa de texto, a forma mais ideal é esta:
db.collection.aggregate([
    { 
       "$match": {
               "$text": { "$search": "cake tea" }
    }
    },
    { "$sort": { "score": { "$meta": "textScore" } } },
    { "$limit": skip + limit },
    { "$skip": skip }
])

A lógica da reserva de memória dos principais resultados de "classificação" só funcionará dentro de seus próprios "limites" e isso não será ideal para nada além de algumas "páginas" razoáveis ​​de dados.

Além do que é razoável para o consumo de memória, o estágio adicional provavelmente terá um efeito negativo em vez de positivo.

Essas são realmente as limitações práticas dos recursos de pesquisa de texto disponíveis para o MongoDB na forma atual. Mas para qualquer coisa mais detalhada e que exija mais desempenho, assim como é o caso de muitas soluções de "texto completo" SQL, é melhor usar uma solução de pesquisa de texto externa "propositadamente construída".