比如说,我在MongoDB中有一个排行榜。以下查询将获得排行榜的一部分:
db.leaderboard.find().sort({ score: -1 }).limit(30)
如果我有一个排行榜条目,_id
,a
,那该怎么办?
db.leaderboard.find({ _id: 'a' })
我如何在排行榜上找到该记录的位置?
答案 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'
的文档可以位于其中任何一个"位置"。