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".