如何在mongo查询/集合中获取记录的位置?

时间:2014-06-03 13:32:55

标签: mongodb

比如说,我在MongoDB中有一个排行榜。以下查询将获得排行榜的一部分:

db.leaderboard.find().sort({ score: -1 }).limit(30)

如果我有一个排行榜条目,_ida,那该怎么办?

db.leaderboard.find({ _id: 'a' })

我如何在排行榜上找到该记录的位置?

1 个答案:

答案 0 :(得分:4)

这很容易。首先,找到目标记录的分数:

db.leaderboard.find({ _id: 'a' }, {score : 1, _id : 0});

然后计算得分高于目标分数的所有文件:

db.leaderboard.find({ score : { $gt : 100 /* targetScore */ } }).count();  

您的位置将是+1的计数。 需要注意的是:如果有多个文档与目标分数具有相同的分数,那么您的职位可能会出现错误"。

示例:当您使用排序对文档进行排序时,您有3个文档。让我们说他们在7,8和9"位置"。您_id : 'a'的文档可以位于其中任何一个"位置"。