Node.js 如何为按特定字段排序的每个返回项目添加排名?
我正在为我的藏书建立一个排名系统,按获奖数量排序,下面是我的数据库返回的结果Node.js 如何为按特定字段排序的每个返回项目添加排名?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在为我的藏书建立一个排名系统,按获奖数量排序,下面是我的数据库返回的结果 { 'awardCount' : 12000, 'year' : 1967, 'by' : 'IEEE Computer Society' }, { 'awardCount' : 11230, 'year' : 1993, 'by' : 'National Academy of Engineerin
{
'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
}
如果不是,在这种情况下,获得排名的最佳解决方案是什么?多谢各位 您可以使用mongodb aggregate来实现这一点。您基本上是按照胜负对文档进行排序,然后在保留索引的同时将每个用户推送到一个新的数组中,该索引是用户的排名,之后您只需在这个新创建的数组上使用“unwind”即可找到有问题的用户,这将为您提供用户的排名和其他详细信息 下面是一个聚合管道示例:
[{
“$sort”:{
“获奖人数”:-1
}
},
{
“$group”:{
“_id”:false,
“书籍”:{
“$push”:{
“\u id”:“$\u id”,
“by”:“$by”,
“年”:“$year”,
“awardCount”:“$awardCount”
}
}
}
},
{
“$REWIND”:{
“路径”:“$books”,
“IncludeAryIndex”:“排名”
}
}]
为什么要添加排名?无法添加带有索引的自定义字段。。。为什么我100%肯定,因为我昨天问了同样的问题。。你可以加上,如果你把它的限制,但这将是更复杂和昂贵的我想有书的排名,这就是为什么我需要排名。你只能在插入文件时这样做。。。其余的我是在上面的评论中告诉你的