繁体   English   中英

MongoDB / Mongoose在您之前查找结果数

[英]MongoDB / Mongoose find number of results before you

假设我有一个名为“points”的猫鼬模型。 我用列名“points”订购它。 通过将我的用户标识传递给文档列名称userid来查找我的文档。

我怎样才能找到某些信息,例如“有xx人比你好?”

在这种情况下,有多少文件比你高?

需要多少次搜索才能“循环”直到您的文档匹配为止?

查询用户的点,然后查询点数高于该用户的用户数。

Points.findOne({userId: userId}, (err, doc) => {
    Points.count({points: {$gt: doc.points}}, (err, count) => {
        // do something with count...
    });
});

对于可伸缩性能,您需要单独索引userIdpoints 在您的架构中:

userId: {type: ObjectId, index: true},
points: {type: Number, index: true},
...

这应该比任何map-reduce解决方案都快。

此问题已在另一个答案https://stackoverflow.com/a/22902445/6386175中得到解决

您可以将mapReduce用于小型数据集或更好,维护单独的有序集合。

如果要使用Model.mapReduce ,Model对象也具有相同语法的Model.mapReduce方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM