sql >> Database teknologi >  >> NoSQL >> MongoDB

gruppe MongoDB-indsamling efter måned og aggregeret omsætning for churn/indtægtsdiagram

Hvis jeg forstår det rigtigt, vil du have omsætningen pr. kunde og pr. måned.

$group-operatoren i en samlet forespørgsel er præcis, hvad du leder efter her.

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

Med ovenstående forespørgsel vil en kunde dukke op mere end én gang, hvis de bestiller på separate måneder. Jeg forstod ikke om det var det du ville eller ej. Hvis du i stedet vil have den samlede værdi for ALLE ordrer fra den pågældende kunde, men også sorteret efter FØRSTE gang, de nogensinde har bestilt, skal du gøre dette i stedet:

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. Sådan sletter du MongoDB-dokumenter ved at importere en fil

  2. Hvordan omdøber/alias felt(er), mens man henter det fra MongoDB gennem forespørgsel ved hjælp af MongoDB-Node.JS native drev?

  3. Er der en måde at projicere typen af ​​et felt på

  4. Hvordan vælger man et enkelt felt til alle dokumenter i en MongoDB-samling?