Добавление значений из элементов массива в MongoDB - PullRequest
0 голосов
/ 07 октября 2018

Я выполнил некоторую агрегацию, чтобы получить приведенную ниже структуру документа для моих данных:

{ 
"_id" : "test", 
"NoOfQuestions" : 3.0, 
"info" : [
    {
        "AnswerrCount" : 3
    }, 
    {
        "AnswerrCount" : 3
    }, 
    {
        "AnswerrCount" : 2
    }
]
}

Однако я пытаюсь сложить все значения в столбце AnswerrCount.Таким образом, из приведенного выше примера, я хочу другой столбец, который говорит TotalAnswers:8, (3+3+2), а затем в конечном итоге получить от использования NoOfQuestions, FinalTotal:11, (8+3)

Ответы [ 2 ]

0 голосов
/ 07 октября 2018
db.collection.aggregate([{
    $unwind: "$info"
}, {
    $group: {
        _id: null,
        TotalAnswers: {
            $sum: '$info.AnswerrCount'
        },
        doc: {
            $first: '$$CURRENT'
        }
    }
}, {
    $project: {
        TotalAnswers: 1,
        FinalTotal: {
            '$add': ['$TotalAnswers', '$doc.NoOfQuestions']
        },
        _id: 0
    }
}])
0 голосов
/ 07 октября 2018

Вы можете использовать агрегацию $sum для добавления значений массива

db.collection.aggregate([
  { "$addFields": {
    "TotalAnswers": {
      "$sum": "$info.AnswerrCount"
    },
    "FinalTotal": {
      "$add": [{ "$sum": "$info.AnswerrCount" }, "$NoOfQuestions"]
    }
  }}
])
...