sql >> Base de Datos >  >> NoSQL >> MongoDB

$skip y $limit en el marco de agregación

Dado que estamos hablando de una consulta de búsqueda de texto, la forma más óptima es esta:

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

La justificación de la reserva de memoria de los mejores resultados de "clasificación" solo funcionará dentro de sus propios "límites", por así decirlo, y esto no será óptimo para nada más allá de unas pocas "páginas" razonables de datos.

Más allá de lo que es razonable para el consumo de memoria, es probable que la etapa adicional tenga un efecto negativo en lugar de positivo.

Estas son realmente las limitaciones prácticas de las capacidades de búsqueda de texto disponibles para MongoDB en la forma actual. Pero para algo más detallado y que requiera más rendimiento, entonces, al igual que ocurre con muchas soluciones de "texto completo" de SQL, es mejor que utilice una solución de búsqueda de texto externa "diseñada específicamente".