MongoDB
 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Entity Framework и MongoDb

  2. MongoError неизвестен оператор от първо ниво:$set

  3. Намиране и връщане на първия съответстващ поддокумент от масива (Meteor / Mongo)

  4. Как да се свържете с MongoDB, работещ в Docker контейнер?

  5. Как да спрете mongo DB с една команда