我是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...
现在我得到了前5名球员:
highscores .find() .sort({'score': -1}) .limit(5) .exec(function(err, users) { ...code... });
这很棒,但我还想做一个像" user12
高分榜上有什么位置?"的查询.
这可能以某种方式通过查询实现吗?
如果您不必实时获得该位置,Neil Lunn的答案是完美的.但是,如果您的应用始终在此集合中插入数据,则对于新数据,您无法获得该展示位置.
这是另一个解决方案:
首先,在此集合中的字段分数上添加索引.然后使用查询db.highscores.count({score:{$gt: user's score})
.它将计算分数大于目标的文档.这个数字是展示位置.