使用 MongoDB/Mongoose 的数据库排行榜

Posted

技术标签:

【中文标题】使用 MongoDB/Mongoose 的数据库排行榜【英文标题】:Leaderboard from database using MongoDB/Mongoose 【发布时间】:2021-10-06 11:10:30 【问题描述】:

在每个文档中都有一个带有数字值的级别字段和一个带有字符串值的 twitch_username。我想像这样返回这些值:

1. Twitch: <twitch_username> Level: <level>
2. Twitch: <twitch_username> Level: <level>
3. Twitch: <twitch_username> Level: <level>
//...

我尝试过映射数据、运行 for 循环、将数据推送到新数组等,但我似乎无法理解它。

当前正在运行此查询,它按降序返回我需要的特定数据:

  User.find().select('twitch_username level -_id').sort(level: 'desc').exec((err,docs) =>  
      // console.log(docs);
  );

上面的查询返回:

[
   twitch_username: 'user1', level: 67 ,
   twitch_username: 'user2', level: 14 
]

这是我想要的,但我不能单独标记每个值,返回数据但我无能为力。

【问题讨论】:

那么你想要的输出是什么? 第一个代码块 是否需要像“1. Twitch: Level... 一样将其作为一个完整的字符串返回? 我认为将它作为一个完整的字符串返回是最有意义的,因为每个用户都有自己的排行榜行 在下面查看我的答案。我将它们简化为单个字符串 【参考方案1】:

你可以使用数组 reduce 将其缩减为一个字符串

const output = [
   twitch_username: 'user1', level: 67 ,
   twitch_username: 'user2', level: 14 
];

然后使用reduce函数

output.reduce((final, current, id) => 
    return (final + (id+1) + '. Twitch: ' + current.twitch_username + ' Level: ' + current.level + '\n');
, '')

【讨论】:

以上是关于使用 MongoDB/Mongoose 的数据库排行榜的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nodejs/mongodb/mongoose 在 ejs/html 中显示数据库项目?

MongoDB(Mongoose)数据库结构题

node.js + express.js:使用 mongodb/mongoose 处理会话

MongoDB Mongoose 连接数据库时出错

mongoDb/Mongoose:使 emailId 唯一字段[重复]

使用护照使用 NodeJs mongodb(mongoose) express 的注册表单