sql >> データベース >  >> NoSQL >> MongoDB

MongoDBコレクションを月ごとにグループ化し、チャーン/収益チャートの総収益

    私が正しく理解していれば、顧客別および月別の収益が必要です。

    集計クエリの$group演算子は、まさにここで探しているものです。

    db.orders.aggregate([
        { $group : { 
                _id: { 
                    customer_id: "$customer_id",
                    month: {$month: "$order_date"}
                },
                revenue: {$sum: "$net_revenue"} 
            }
        }], ... );
    

    上記のクエリでは、顧客が別々の月に注文した場合、顧客は複数回表示されます。それがあなたが望んでいたものであるかどうか私は理解していませんでした。代わりに、その顧客からのすべての注文の合計値が必要であるが、顧客が初めて注文したときにも並べ替える場合は、代わりに次のようにします。

    db.orders.aggregate([
        { $sort: { order_date : 1 } }, //order by date so that $first is correct
        { $group : { 
                _id: { 
                    customer_id: "$customer_id",                
                },
                month: { $first: {$month: "$order_date"} }
                revenue: {$sum: "$net_revenue"} 
            }
        }], ... );
    



    1. MongoDBは行方不明の日を埋めます

    2. perlでmongodbに挿入します

    3. 集計$lookupは、要素の元の配列順序を返しません

    4. ダイヤルtcp[::1]:6397:connectex:ターゲットマシンがアクティブに拒否したため、接続できませんでした