Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

334
Views
Problema de velocidad y también error de memoria al consultar en Mongo

Tengo una tabla que contiene más de 100.000 registros. Servidor: node.js/express.js. DB: mongo En el cliente, se implementa una tabla con un buscapersonas. Se solicitan 10 registros cada vez.

Cuando había 10.000 registros, por supuesto, todo funcionaba más rápido, pero ahora había un problema con la velocidad y no solo.

Mi agregación:

 import { concat } from 'lodash'; ... let query = [{$match: {}}]; query = concat(query, [{$sort : {createdAt: -1}}]); query = concat(query, [ {$skip : (pageNum - 1) * perPage}, // 0 {$limit : perPage} // 10 ]); return User.aggregate(query) .collation({locale: 'en', strength: 2}) .then((users) => ...;

2 casos:

  1. primera búsqueda muy lenta

  2. cuando hago clic en la última página me sale el error:

    MongoError: la ordenación excedió el límite de memoria de 104857600 bytes, pero no optó por la ordenación externa. Cancelación de la operación. Pase allowDiskUse:true para participar.

Por favor, dígame, estoy construyendo la agregación incorrectamente, o hay un problema con la memoria en el servidor como dice el error y se necesitan configuraciones nginx adicionales (otra persona está involucrada en esto) o el problema es complejo, o tal vez algo más ¿en total?

Agregado:

Noté que el índice no se usa al ordenar, aunque debería usarse.

ingrese la descripción de la imagen aquí

agregación para ejecutar console.log =>

 [ { "$match": {} }, { "$lookup": { ... } }, { "$project": { ..., createdAt: 1, ... } }, { "$match": {} }, { "$sort": { "createdAt": -1 } }, { "$skip": 0 }, { "$limit": 10 } ]

Gracias por cualquier respuesta y lo siento mi inglés :)

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Sí dice que tiene un límite de memoria, lo cual tiene sentido, considerando que está tratando de filtrar a través de 100,000 solicitudes. Intentaría usar return User.aggregate(query, { allowDiskUse: true }) //etc , y ver si eso soluciona su problema.

Si bien esta no es la documentación sobre el controlador Node.js específicamente, este enlace resume lo que hace la opción allowDiskUse (o, en resumen, permite que MongoDB supere el límite de memoria de 100 MB y utiliza el almacenamiento de su sistema para almacenar temporalmente cierta información mientras realiza la consulta).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!