Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

305
Vistas
Cómo mantener el orden de una colección de Mongo ordenando en un campo indexado de manera eficiente
ObjectId _id <--- index String UserName int Points <--- Descending index

Usando esta estructura de documento como un ejemplo simple, tenemos una colección de usuarios, cada uno con un nombre y un valor de "puntos". La colección tiene el índice _id habitual pero también un "índice descendente" en Points .

Problema

El ejemplo de caso de uso sería mantener un marcador de clasificación (algo así como el sistema de clasificación de League of Legends/DOTA o el sistema de elo de ajedrez). El campo de Points de cada usuario cambiaría constantemente, pero el marcador se ve con mucha frecuencia y, por lo tanto, debe mantenerse con precisión.

Mi solución no optimizada actual

No estoy seguro de qué significa "orden de clasificación ascendente/descendente" en los documentos de mongo , pero aparentemente no importa para los índices de un solo campo de todos modos. Así que actualmente solo estoy haciendo una solución de fuerza bruta para ordenar la colección cada vez que se actualiza el campo Points de un usuario. Al menos está indexado, por lo que para una base de usuarios más pequeña esto no debería ser tan malo. Sin embargo, clasificar toda la base de usuarios en cada actualización/inserción parece incorrecto en general.

Otras cosas que estoy considerando

Hay estructuras de datos que se usan tradicionalmente para mantener el orden durante la inserción/actualización, como los árboles de búsqueda, pero implementar eso sin poner toda la colección en la memoria parece un gran proyecto en sí mismo.

Intenté buscar alguna funcionalidad integrada de los índices de Mongo que mantuviera automáticamente el orden en la colección, pero no pude encontrar nada parecido.

¿Tal vez alguna lógica para volver a ordenar solo una parte de los documentos directamente encima y debajo de la inserción/actualización? Esta solución parece bastante dependiente de la distribución esperada de Points en la base de usuarios y los casos de uso de este sistema.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No necesita ordenar índices ya creados adicionalmente, cuando crea índices en mongoDB, especifica en qué dirección deben ordenarse (ascendente (1) o descendente (-1)), por lo que cuando busca varios documentos en función de algunos campo, el resultado ya estará ordenado en función de este orden de índice de campo. Por supuesto, puede especificar explícitamente si necesita el resultado en orden inverso o ordenado por otro campo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda