MongoDB - 获取排行榜的前 5 个字段

MongoDB - Fetch top 5 fields of a leaderboard

我有一个非常简单的 table 输出数据为

{
_id: 55dbdffeaba8ee274d3b9f89,
    firstname: 'Jim',
    lastname: 'Kirk',
    email: 'ewrwe@kewoio.com',
    points: 3333,
}

到目前为止,我的数据库中大约有 10 条记录。我使用以下 var 来创建用户模型。

var User = mongoose.model('User', userSchema);

我想按最多的点排序并在任何给定时间显示前 5 个。存储为变量并作为数组传递给 express/ejs。

到目前为止我有这个查询但是当我 console.log 我得到未定义的。

var leaderboard = User.find( {points: {$exists: true}} ).sort({points : -1}).limit(5);

更新:在 运行 在 Robomongo 中进行此查询后,我得到了 5 条包含所有数据的记录,但是 console.log returns 数据 'undefined'。如何将数据输出为数组以放入 table 并过滤掉 _id 和电子邮件?

你好像弄乱了 "points" 和 "score" 文档字段。

问题发生在

之后
var leaderboard = User.find( {points: {$exists: true}} ).sort({points : -1}).limit(5);

get 的执行排行榜包含一个光标。将 .toArray() 附加到命令的末尾,你应该可以开始了。您的最终命令应如下所示:

var leaderboard = User.find( {points: {$exists: true}} ).sort({points : -1}).limit(5).toArray();

查看 the documentation 了解更多信息。