Агрегат Mongodb, сумма объекта внутри объекта - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь объединить данные в mongoDb.Этот запрос прекрасно работает:

db.getCollection('map').aggregate([
{
    $group: {
        _id: "$Support",
        gross: { $sum :"$Budget.Gross"},
    }}        
])

Но я бы предпочел иметь что-то вроде:

db.getCollection('map').aggregate([
{
    $group: {
        _id: "$Support",
        Budget: { gross: { $sum :"$Budget.Gross"}},
    }}        
])

Что не работает, говоря: «Поле« Бюджет »должно быть мнойаккумуляторный объект ".Я понимаю, почему это невозможно сделать таким образом.MongoDb не знает, как агрегировать {gross: {$ sum: "$ Budget.Gross"}}.

Но есть ли способ получить такой результат?

Спасибоза вашу помощь

1 Ответ

0 голосов
/ 14 декабря 2018

Вы должны использовать $projection, чтобы изменить форму вывода соответственно

db.getCollection('map').aggregate([
  { "$group": {
    "_id": "$Support",
    "gross": { "$sum": "$Budget.Gross" },
  }},
  { "$project": {
    "Budget": { "gross": "$gross" }
  }}
])
...