如何获取mongo结果集中项的索引

时间:2014-05-19 17:10:12

标签: mongodb

我想对mongodb集合执行排序查询,查找特定项并在结果集中检索其索引。 例如,找到所有学生,按降序排序,并获得学生'John Connor'的位置。就像在课堂上获得John Connor的排名一样。 我想到的唯一方法是查询整个集合并以编程方式对结果集执行搜索。它看起来效率不高,特别是因为它可能会在集合增长时出现内存问题。

1 个答案:

答案 0 :(得分:1)

对于大型数据集,这类问题的一个答案是定期计算排名 - 每天一次,每小时一次,无论适合您的用例,然后存储预先计算的排名。 Stackoverflow正是如此 - 如果我们要查看你在stackoverflow上的排名 - http://stackexchange.com/leagues/1/year/stackoverflow/2014-01-01/873641#873641 - 这个排名不是动态计算的。您的问题已被提升,因此您的声誉已增加5,但您的排名尚未反映。

此主题的变体是在任何人的成绩发生变化时强制重新排名。当等级变化在一些不经常的基础上发生时很有用,但是通过在变化之后立即运行计算,您可以获得最小的排名时间,并且不断重新排名。

关于mongodb的细节,是的,您需要走排名列表才能计算出来。