Mongodb Dynami c $ сумма с условием - PullRequest
1 голос
/ 06 апреля 2020

У меня есть документы, подобные этому, в моем mongodb

[

{
     key1:"6789",
     type:"A",
     points:2000    
},


{
     key1:"6789",
     type:"A",
     points:200000    
},

{
     key1:"777890",
     type:"A",
     points:10    
},
{
     key1:"777890",
     type:"A",
     points:1000    
}


]

Мне нужна окончательная сумма, основанная на key1 и type, так что если два документа имеют одинаковый ключ key1 и введите его там Очки должны быть добавлены

Конечный результат что-то вроде

[
    {
     key1:"777890",
     type:"A",
     Sumpoints:1010

    }
{
 key1:"6789",
 type:"A",
 Sumpoints:2002000

}


]

Это возможно с mongodb?

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете $ group более чем в одном поле, указав _id в качестве объекта:

db.collection.aggregate([
    {
        $group: {
            _id: { key1: "$key1", type: "$type" },
            Sumpoints: { $sum: "$points" }
        }
    },
    {
        $project: {
            _id: 0,
            Sumpoints: 1,
            key1: "$_id.key1",
            type: "$_id.type"
        }
    }
])

Пн go Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...