Найти сумму полей внутри массива в MongoDB - PullRequest
0 голосов
/ 01 июня 2018

У меня есть следующие данные:

> db.PQRCorp.find().pretty()
{
    "_id" : 0,
    "name" : "Ancy",
    "results" : [
            {
                    "evaluation" : "term1",
                    "score" : 1.463179736705023
            },
            {
                    "evaluation" : "term2",
                    "score" : 11.78273309957772
            },
            {
                    "evaluation" : "term3",
                    "score" : 6.676176060654615
            }
    ]
}
{
    "_id" : 1,
    "name" : "Mark",
    "results" : [
            {
                    "evaluation" : "term1",
                    "score" : 5.89772766299929
            },
            {
                    "evaluation" : "term2",
                    "score" : 12.7726680028769
            },
            {
                    "evaluation" : "term3",
                    "score" : 2.78092882672992
            }
    ]
}
{
    "_id" : 2,
    "name" : "Jeff",
    "results" : [
            {
                    "evaluation" : "term1",
                    "score" : 36.78917882992872
            },
            {
                    "evaluation" : "term2",
                    "score" : 2.883687879200287
            },
            {
                    "evaluation" : "term3",
                    "score" : 9.882668212003763
            }
    ]
}

Чего я хочу добиться, это: * Найти сотрудников, которые потерпели неудачу в совокупности (term1 + term2 + term3)

Что я делаю и в итоге получаю:

db.PQRCorp.aggregate([ 
{$unwind:"$results"},
{ $group: {_id: "$id",
   'totalTermScore':{ $sum:"$results.score" }
  }
}])

ВЫХОД: {"_id": null, "totalTermScore": 90.92894831067625} Просто я получаю вывод флетасумма всех баллов. Что я хочу, так это суммировать условия 1, 2 и 3 отдельно для отдельных сотрудников.

Пожалуйста, кто-нибудь может мне помочь.Я новичок в MongoDB (хотя вполне очевидно).

1 Ответ

0 голосов
/ 01 июня 2018

Вам не нужно использовать $unwind и $group здесь ... Простой $project запрос может $sum весь ваш счет ...

db.PQRCorp.aggregate([
  { "$project": {
    "name": 1,
    "totalTermScore": {
      "$sum": "$results.score"
    }
  }}
])
...