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

214
Views
Consultas mongodb más lentas para documentos grandes

Tengo una base de datos mongodb con solo 2 documentos . Ambos tienen la misma estructura:

 { "general" { "name": "abc", "sid": "435435"},"resources":[{"id":1,"cnt":20}] "messages" : []}

El documento pequeño tiene 0 objetos en mensajes, el grande 1000. Conté los signos en ambos documentos: pequeño: 28000 grande: 450000

Estoy usando nodeJS con el controlador mongodb normal para acceder a los documentos y tengo un índice establecido en "general.sid".

Ahora estoy solicitando los documentos por su general.sid. ¡Y los tiempos difieren mucho para ambos documentos! Recibo el documento, hago algunos cálculos y actualizo los documentos generales.recursos.

Imprimo el tiempo antes y después de recibir y actualizar el documento. Hice estas consultas varias veces:

Recepción: Período de tiempo de documento pequeño: 1-2ms

Recepción: Período de tiempo de documento grande: 7-20 ms

Escritura: Período de tiempo de documento pequeño: 1-2ms

Escritura: Período de tiempo de documento grande: 5-10 ms

código para la función de recepción:

 db.get().collection('player_data').find({"general.sid":UID}).limit(1).toArray(function (err, result){ if(err){ reject(null); } resolve(result); });

¿Por qué hay diferencias tan grandes?

No soy un profesional en mongodb o nodejs, ¡así que dígame si necesita otros datos!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La diferencia viene de lo que ya dijiste, la diferencia de tamaño del documento.

Una consulta indexada primero escanea el árbol B del índice y, una vez que encuentra una coincidencia, comienza a buscar los documentos, mientras que el tiempo de escaneo del índice para un documento específico puede variar (según el tamaño del árbol y en qué parte del árbol se encuentra ese documento) . En su caso, una colección con 2 documentos y un índice simple en un campo sin matriz, la parte de exploración de índice de la consulta será idéntica.

Esto nos lleva a la siguiente parte de la consulta de find , leer el documento coincidente en la memoria, y aquí no hay sorpresas, más bytes para cargar en la memoria. más tiempo tomará la consulta. Es más difícil dar una explicación exacta de la función de write , ya que no mucha gente sabe exactamente cómo Mongo actualiza un documento, pero me imagino que si actualiza un campo que no es la matriz de mensajes, la diferencia también será insignificante.

Si está solicitando un mejor "patrón de diseño" para su base de datos, depende completamente de sus necesidades diarias, pero para solucionar este problema actual, le sugiero que guarde los messages en una colección separada.

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!