当前位置:  开发笔记 > 编程语言 > 正文

根据排序顺序获取文档在集合中的位置

如何解决《根据排序顺序获取文档在集合中的位置》经验,为你挑选了1个好方法。

我是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高分榜上有什么位置?"的查询.

这可能以某种方式通过查询实现吗?



1> 小智..:

如果您不必实时获得该位置,Neil Lunn的答案是完美的.但是,如果您的应用始终在此集合中插入数据,则对于新数据,您无法获得该展示位置.

这是另一个解决方案:

首先,在此集合中的字段分数上添加索引.然后使用查询db.highscores.count({score:{$gt: user's score}).它将计算分数大于目标的文档.这个数字是展示位置.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有