Estoy creando un sistema de premios para mis usuarios y quiero mostrarles sus rangos entre los demás usuarios. Traté de lograr esto mediante algunas funciones JS integradas, pero no pude hacerlo.
Esquema de nivel
{ userID: String, xp: Number, lastUpdate: Number }Estoy ordenando esta colección por XP "descendente":
await schemas.levels.find({}).sort({ xp: -1 })¿Cómo puedo obtener una clasificación de usuarios (por ID de usuario) en esta matriz de clasificación?
Hola, si desea encontrar la posición del documento (rango del usuario en una matriz) independientemente de cualquier orden, actualmente no es posible ya que MongoDb no almacena los documentos en un orden específico. Sin embargo, hay una forma de evitar esto modificando los datos devueltos por mongo.
var docIndex = 0; db.schemas.find({}, { "_id": 1 }).sort({ "xp": -1 }).forEach(function(doc) { docIndex++; if (userID == doc["userID"]) { print("User's Rank is..." + docIndex); // Add rank to doc payload here // return false; } });También puede consultar esta publicación Obtener posición del documento en la sección de respuesta, ha perdido formas de devolver la posición del documento