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

Połącz wiele grup w agregację w mongodb

Możesz zagregować jak poniżej:

  • $group przez store oblicz subtotal .

  • $project pole doc aby zachować subtotal grupa w takcie, podczas następnej grupy.

  • $group przez null i zgromadzić sumę netto.

Kod:

db.invoices.aggregate([{
            $group: {
                "_id": "$store",
                "subtotal": {
                    $sum: "$total"
                }
            }
        }, {
            $project: {
                "doc": {
                    "_id": "$_id",
                    "total": "$subtotal"
                }
            }
        }, {
            $group: {
                "_id": null,
                "total": {
                    $sum: "$doc.total"
                },
                "result": {
                    $push: "$doc"
                }
            }
        }, {
            $project: {
                "result": 1,
                "_id": 0,
                "total": 1
            }
        }
    ])

Wyjście:

{
    "total": 1000,
    "result": [{
            "_id": "ABC",
            "total": 700
        }, {
            "_id": "XYZ",
            "total": 300
        }
    ]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak znaleźć kolekcję kodu z regex i złożonymi kryteriami za pomocą sterownika Java MongoDB?

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

  3. Czy istnieje sposób na "ładne" wydrukowanie danych wyjściowych powłoki MongoDB do pliku?

  4. Spring boot próbuje połączyć się z mongo po dodaniu zależności maven mongo-java-driver

  5. Funkcja wywołania zwrotnego nigdy nie jest wywoływana po wykonaniu zapytania Mongoose