MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

$skip e $limit nel framework di aggregazione

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.