acr*_*uui 2 javascript mapreduce mongoose mongodb
我是MongoDB(+ Mongoose)的新手.我有一个高分的集合,文档看起来像这样:
{id: 123, user: 'User14', score: 101}
{id: 231, user: 'User10', score: 400}
{id: 412, user: 'User90', score: 244}
{id: 111, user: 'User12', score: 310}
{id: 221, user: 'User88', score: 900}
{id: 521, user: 'User13', score: 103}
+ thousands more...
Run Code Online (Sandbox Code Playgroud)
现在我得到了前5名球员:
highscores
.find()
.sort({'score': -1})
.limit(5)
.exec(function(err, users) { ...code... });
Run Code Online (Sandbox Code Playgroud)
这很棒,但我还想做一个像" user12高分榜上有什么位置?"的查询.
这可能以某种方式通过查询实现吗?
小智 7
如果您不必实时获得该位置,Neil Lunn的答案是完美的.但是,如果您的应用始终在此集合中插入数据,则对于新数据,您无法获得该展示位置.
这是另一个解决方案:
首先,在此集合中的字段分数上添加索引.然后使用查询db.highscores.count({score:{$gt: user's score}).它将计算分数大于目标的文档.这个数字是展示位置.