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

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

如果我有一个排行榜条目,例如 _ida 会怎样:
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/

10-16 11:10
查看更多