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 了解更多信息。
我有一个非常简单的 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 了解更多信息。