MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да обобщим оценките на всички предмети в mongoDB

Можете да използвате агрегирането по-долу:

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" }
        }
    }
])

Тъй като вашите марки се съхраняват като обект, трябва да използвате $objectToArray за да получите набор от теми. След това можете да използвате $reduce да се сумират всички предмети за един ученик.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb c# изберете специфично поле точка нотация

  2. Времето за заявка за сърдечен ритъм на реплика на MongoDB е надвишено

  3. Mongoid 3 - достъп до резултатите от map_reduce

  4. Актуализирайте вложен обект в MongoDB, ако съществува, в противен случай го добавете

  5. mongodb:конвертиране на идентификатори на обекти в BSON::ObjectId