Poiché si tratta di una query di ricerca di testo di cui stiamo parlando, la forma più ottimale è questa:
db.collection.aggregate([
{
"$match": {
"$text": { "$search": "cake tea" }
}
},
{ "$sort": { "score": { "$meta": "textScore" } } },
{ "$limit": skip + limit },
{ "$skip": skip }
])
La logica sulla riserva di memoria dai risultati di "ordinamento" in alto funzionerà solo entro i suoi "limiti" per così dire e questo non sarà ottimale per nient'altro che alcune ragionevoli "pagine" di dati.
Al di là di quanto è ragionevole per il consumo di memoria, la fase aggiuntiva avrà probabilmente un effetto negativo anziché positivo.
Questi sono davvero i limiti pratici delle capacità di ricerca di testo disponibili per MongoDB nella forma attuale. Ma per qualsiasi cosa più dettagliata e che richieda maggiori prestazioni, proprio come nel caso di molte soluzioni SQL "full text", è meglio utilizzare una soluzione di ricerca di testo "costruita ad hoc" esterna.