• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

268
Views
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 3 years ago · Santiago Trujillo
1 answers
Answer question

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 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error