假设我有一个名为“points”的 Mongoose 模型。我用列名“points”订购它。并通过将我的用户 ID 传递给文档列名称用户 ID 来查找我的文档。
我怎样才能找到某些信息,例如“有 xx 人比你优秀?”
在这种情况下,有多少文件的分数比你高?
需要“循环”多少次搜索才能找到与您的文档匹配的内容?
最佳答案
查询用户的积分,然后查询积分高于此的用户数。
Points.findOne({userId: userId}, (err, doc) => {
Points.count({points: {$gt: doc.points}}, (err, count) => {
// do something with count...
});
});
为了可扩展的性能,您需要分别索引 userId
和 points
。在您的架构中:
userId: {type: ObjectId, index: true},
points: {type: Number, index: true},
...
这应该比任何 map-reduce 解决方案都要快。
关于javascript - MongoDB/Mongoose 在您之前查找结果数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39626999/