比如说,我在 MongoDB 中有一个排行榜。以下查询将获取排行榜的一部分:
db.leaderboard.find().sort({ score: -1 }).limit(30)
如果我有一个排行榜条目,例如
_id
的 a
会怎样:db.leaderboard.find({ _id: 'a' })
我将如何找到该记录在排行榜上的位置?
最佳答案
这很简单。首先,找到目标记录的分数:
db.leaderboard.find({ _id: 'a' }, {score : 1, _id : 0});
然后统计所有分数大于目标分数的文档:
db.leaderboard.find({ score : { $gt : 100 /* targetScore */ } }).count();
您的位置将是计数的 +1。
一个警告:如果有多个文档的分数与目标分数相同,那么您的位置可能是“错误的”。
一个例子:当您使用 sort 对文档进行排序时,您有 3 个文档。假设它们处于 7,8 和 9“位置”。带有
_id : 'a'
的文档可以位于这些“位置”中的任何一个。关于mongodb - 如何在 mongo 查询/集合中获取记录的位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24016559/