我按照奖励计数为我的图书集创建排名系统,以下是从我的数据库返回的结果
{
'awardCount' : 12000,
'year' : 1967,
'by' : 'IEEE Computer Society'
},
{
'awardCount' : 11230,
'year' : 1993,
'by' : 'National Academy of Engineering'
},
{
'awardCount' : 10600,
'year' : 1993,
'by' : 'National Academy of Engineering'
}
........about 10000+ more and sorted by awardCount
我使用此查询获取上面的结果
.find()
.sort({awardCount: -1 })
我的问题是,是否可以添加排名'每个项目中的字段显示排名顺序?例如
{
'awardCount' : 12000,
'year' : 1967,
'by' : 'IEEE Computer Society',
'rank': 1
},
{
'awardCount' : 11230,
'year' : 1993,
'by' : 'National Academy of Engineering',
'rank': 2
}
如果没有,在这种情况下获得排名的最佳解决方案是什么?非常感谢你!
答案 0 :(得分:0)
您可以使用 mongodb聚合来实现此目的。您基本上按胜负对文档进行排序,然后在保留索引的同时将每个用户推入一个新数组中,该索引是用户之后的排名您可以在这个新创建的数组上简单地使用“展开”并找到有问题的用户,这将为您提供该用户的排名以及其他详细信息。
以下是示例汇总管道:
[{
"$sort": {
"awardCount": -1
}
},
{
"$group": {
"_id": false,
"books": {
"$push": {
"_id": "$_id",
"by": "$by",
"year": "$year",
"awardCount": "$awardCount"
}
}
}
},
{
"$unwind": {
"path": "$books",
"includeArrayIndex": "rank"
}
}]