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

Jak zagregować oceny wszystkich przedmiotów w mongoDB

Możesz użyć poniższej agregacji:

db.col.aggregate([
    {
        $unwind: "$marks"
    },
    {
        $project: {
            _id: 1,
            name: 1,
            marks: {
                $objectToArray: "$marks"
            }
        }
    },
    {
        $project: {
            _id :1,
            name: 1,
            total_marks: {
                $reduce: {
                    input: "$marks",
                    initialValue: 0,
                    in: { $add : ["$$value", "$$this.v"] }
                }
            }
        }
    },
    {
        $group: {
            _id: "$_id",
            name: { $first: "$name" },
            total_marks: { $sum: "$total_marks" }
        }
    }
])

Ponieważ twoje znaki są przechowywane jako obiekt, powinieneś użyć $objectToArray aby uzyskać szereg tematów. Następnie możesz użyć $reduce zsumować wszystkie przedmioty dla jednego ucznia.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. podłączenie mongodb stworzonego w mongolabie przez aplikację java

  2. MongoDb — Zmień typ z Int na Double

  3. Meteor:nieoczekiwany kod wyjścia mongo null. Ponowne uruchamianie. Co to jest?

  4. Jak wykonać agregację w mongodb w frameworku laravel

  5. Współbieżność w gopkg.in/mgo.v2 (Mongo, Go)