zoukankan      html  css  js  c++  java
  • 一次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。

  • 相关阅读:
    = =写个prim希望能够巨巨们看的懂
    poj2389 普通的大数乘法
    Codeforces 378C
    hdoj1272 小希的迷宫
    hihoCoder搜索二·骑士问题
    hihoCoder扩展欧几里得
    hihoCoder 1032
    664A
    【水水水】678A
    Codeforces Round #357 (Div. 2)C. Heap Operations
  • 原文地址:https://www.cnblogs.com/agentgamer/p/5857747.html
Copyright © 2011-2022 走看看