我收集了一些如下所示的高分文档:

{
  "data": {
    "highscores": [
      {
        "id": "58c02942f9256663764edc3d",
        "userName": "user3",
        "score": 123,
        "rank": null
      },
      {
        "id": "58c02957f9256663764edc3e",
        "userName": "user2",
        "score": 444,
        "rank": null
      },
      {
        "id": "58c02966f9256663764edc3f",
        "userName": "user1",
        "score": 64,
        "rank": null
      },
      {
        and more...
      }
    ]
  }
}

现在,我正在使用以下代码行来显示已排序的高分列表:
this.model.find({}).sort({ score: -1 }).limit(5);

但是我想按等级排序,以便我可以按等级值跳到该文档(例如,在此之后显示接下来的9个文档)。但是我不知道如何遍历集合并根据用户的得分值设置等级。有人可以帮忙吗?

编辑:分数越高,排名越高。因此,在该示例列表中,user2为第一(排名1),user3为第二(排名2),而user1具有排名3。

Edit2:我正在使用 Mongoose 。 MongoDB native 中存在某些功能,但Mongoose中不存在。

最佳答案

使用 native 驱动程序,可以通过以下方式完成:

var results=db.ranks.find().sort({score:-1}).limit(3).toArray()

for(var i=0;i<results.length;i++)
{    db.ranks.update({id:results[i].id}, {$set: {rank: i+1}}, {multi:true})
}

关于mongodb - 根据得分设置文件在收藏中的等级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42769228/

10-12 05:38