MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

grupowe gromadzenie MongoDB według miesiąca i łączne przychody dla wykresu churn/przychodów

Jeśli dobrze rozumiem, chcesz uzyskać przychód według klienta i według miesiąca.

Operator $group w zapytaniu zbiorczym jest dokładnie tym, czego tutaj szukasz.

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

Przy powyższym zapytaniu klient pojawi się więcej niż raz, jeśli złoży zamówienie w oddzielnych miesiącach. Nie rozumiałem, czy tego chciałeś, czy nie. Jeśli zamiast tego chcesz uzyskać całkowitą wartość WSZYSTKICH zamówień od tego klienta, ale posortowaną również według PIERWSZEGO zamówienia, zrób to:

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. Dodanie rozszerzenia mongodb dla php 5.6 (XAMPP)

  2. Wydajny sposób stronicowania z MongoDB i ASP.NET MVC

  3. Znaleźć obiekt na podstawie elementu tablicy, zwrócić tylko pasujący element tablicy?

  4. Jaka jest maksymalna liczba shardów, które może mieć MongoDB?

  5. MongoError:pula instancji serwera została zniszczona