[英]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...
});
});
对于可伸缩性能,您需要单独索引userId
和points
。 在您的架构中:
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.