Mongoose 在排序集合中查找文档排名
Mongoose Find Document Rank in Sorted Collection
我正在为我的用户创建一个奖励系统,我想向他们展示他们在其他用户中的排名。我试图通过一些内置的 JS 函数来实现这一点,但我做不到。
级别架构
{
userID: String,
xp: Number,
lastUpdate: Number
}
我正在按“降序”对这个集合进行排序 XP:
await schemas.levels.find({}).sort({
xp: -1
})
如何在此排序数组中获得用户排名(按用户 ID)。
您好,如果您想查找文档的位置(用户在数组中的排名)而不考虑任何顺序,目前是不可能的,因为 MongoDb 不按特定顺序存储文档.但是,有一种方法可以通过修改 return 从 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;
}
});
您还可以在答案部分查看此 post Get Position of Document 它已丢失 return 文档位置
的方法
我正在为我的用户创建一个奖励系统,我想向他们展示他们在其他用户中的排名。我试图通过一些内置的 JS 函数来实现这一点,但我做不到。
级别架构
{
userID: String,
xp: Number,
lastUpdate: Number
}
我正在按“降序”对这个集合进行排序 XP:
await schemas.levels.find({}).sort({
xp: -1
})
如何在此排序数组中获得用户排名(按用户 ID)。
您好,如果您想查找文档的位置(用户在数组中的排名)而不考虑任何顺序,目前是不可能的,因为 MongoDb 不按特定顺序存储文档.但是,有一种方法可以通过修改 return 从 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;
}
});
您还可以在答案部分查看此 post Get Position of Document 它已丢失 return 文档位置
的方法