首页 > 代码库 > 一次mongodb 统计需求
一次mongodb 统计需求
需求:
临下班运营的同事发来了一个需求,要统计数据库里某个collection的所有document 中某个字段(_id)出现的次数。_id 字段的范围是0-4000。
假设collection 是这样:
{ _id: 123},{ _id: 456},{ _id:123}
那么最终结果:[{_id: 123, value: 2}, {_id:456, value: 1}] 其实就是个count frequency 的操作
方案:
粗暴的方法可以遍历所有document 然后累加,但是更好的方式是用mongodb 的mapreduce 操作:https://docs.mongodb.com/manual/core/map-reduce/
db.collection.mapReduce( function(){emit(this._id, 1)}, function(key, values){return Array.sum(values);}, {query:{...}, out: {inline: 1}} )
这里值得一提的是emit 里,value 是1,这样每个document 都是一个1,之后reduce 的时候我们就拿到一个全是1 的数组。
接下来用http://www.cnblogs.com/agentgamer/p/4994650.html 提到的方法,就可以继承到shell 里面,以标准输出的方式交给其他工具使用了,inline 的输出基本是一个json。
一次mongodb 统计需求
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。