Seguí la guía en la página mongo Text Search pero cuando construyo un índice de texto en mi colección (alrededor de 2 millones de líneas) e intento buscar algunos y ordenar por puntaje, devuelve un error:
Error: error: { "ok" : 0, "errmsg" : "Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.", "code" : 96, "codeName" : "OperationFailed" }De acuerdo con los documentos , si mongoDB no puede obtener el orden de clasificación a través de un escaneo de índice, utilizará un algoritmo que almacenará en búfer los primeros k resultados de la consulta. Si la huella de memoria supera los 32 megabytes, la consulta fallará, que es lo que está experimentando. Intente limitar el número de resultados escaneados utilizando el método limit() .
@Tristan es correcto, pero una mejor solución que usar el límite sería filtrar primero por el puntaje. Al usar el límite, es posible que no obtenga la puntuación más alta en su conjunto de registros.
Por ejemplo, si su puntaje fuera de 100 y estuviera interesado en filtrar los puntajes altos primero antes de realizar la clasificación.
db.getCollection("myCollection").find( { "score" : { "$gt" : 90 } } ).sort( { "score" : 1.0 } );