根据得分

时间:2017-03-13 16:55:35

标签: mongodb mongoose

我有一系列高分文档,如下所示:

{
  "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中存在一些功能,但Mongoose中不存在这些功能。

2 个答案:

答案 0 :(得分:2)

使用本机驱动程序,可以这样做:

test1.Inputs.SequenceEqual(test2.Inputs);

答案 1 :(得分:1)

好吧,我让它在猫鼬工作。感谢Astro帮助我朝着正确的方向前进:

  return this.model.find({}).sort({ score: -1 }).exec((err, docs) => {
  for (var i = 0; i < docs.length; i++) {
    this.model.update({ _id: docs[i].id }, { $set: { rank: i + 1 } }, { multi: true }).exec();
  }