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

Zsumuj wszystkie wartości tych samych nazwanych pól dokumentów w kolekcji

Możesz skorzystać z $objectToArray i $arrayToObject operatorów do dynamicznego odczytywania kluczy obiektowych. Aby pozbyć się _id i name pola, które możesz $filter autorstwa $type .

db.collection.aggregate([
    {
        $project: {
            _id: 0,
            fields: {
                $filter: {
                    input: { $objectToArray: "$$ROOT" },
                    cond: { $eq: [ { $type: "$$this.v" }, "double" ] }
                }
            }
        }
    },
    {
        $unwind: "$fields"
    },
    {
        $group: {
            _id: "$fields.k",
            total: { $sum: "$fields.v" }
        }
    },
    {
        $group: {
            _id: null,
            aggregates: { $push: { k: "$_id", v: "$total" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$aggregates" }
        }
    }
])

Plac zabaw Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak testować indeksy Mongo w testach integracyjnych?

  2. Obsługa transakcji Spring Data MongoDB 4.0

  3. Usuń elementy z tablicy dokumentów w Spring+Mongo

  4. jak wyświetlić zapytanie podczas korzystania z adnotacji zapytania w MongoRepository z danymi wiosennymi

  5. Odpytywanie mongodb z golanga przy użyciu _id przechowywanego w tablicy