我有一个大型 MongoDB 集合,其中包含一个用户 ID 和一个表示该用户随时间推移的总点击次数的计数器。我希望能够计算给定的用户百分位数。
从概念上讲,我想做的是对集合进行排序,然后获取给定用户记录的行号,并将该数字除以集合的总计数:
percentile = row_index / total_rows;
这在 MongoDB 中如何实现?
获取总计数db.yourCollection.count()
然后使用以下方法计算数量较大的记录
db.yourCollection.find({$gte: value}).count()
如果总计数 = 1000,则大于或等于计数 = 950,那么您就得到了 950/1000 - 前 95%
但是,如果您经常在读取模式下使用集合,而很少在写入模式下使用集合,我建议使用 MapReduce 创建新的临时集合以包含记录{_id:..., percent:...}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)