sql >> Database >  >> NoSQL >> MongoDB

groepeer MongoDB-verzameling per maand en totale inkomsten voor churn / inkomstengrafiek

Als ik het goed begrijp wil je de omzet per klant en per maand.

De operator $group in een samengestelde zoekopdracht is precies wat u hier zoekt.

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

Met de bovenstaande vraag zal een klant meer dan eens verschijnen als hij in verschillende maanden bestelt. Ik begreep niet of je dat wilde of niet. Als u in plaats daarvan de totale waarde voor ALLE bestellingen van die klant wilt, maar ook wilt sorteren op de EERSTE keer dat ze ooit hebben besteld, doet u dit in plaats daarvan:

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. Hoe lees je het liefst op secondaries in MongoDb

  2. Redis afsluiten

  3. Hoe alle resultaten te krijgen als het afwikkelveld niet bestaat in mongodb

  4. sql-query naar mongodb?