Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何为按特定字段排序的每个返回项目添加排名?_Node.js_Mongodb_Mongoose - Fatal编程技术网

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%肯定,因为我昨天问了同样的问题。。你可以加上,如果你把它的限制,但这将是更复杂和昂贵的我想有书的排名,这就是为什么我需要排名。你只能在插入文件时这样做。。。其余的我是在上面的评论中告诉你的