Несколько аргументов в агрегате mongodb - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь получить несколько аргументов в моем mongodb, мой код здесь получает отличные значения для даты и подсчитывает ее, но как я могу добавить другой аргумент, чтобы получить, например, другой набор отлично и count.

Пример:

Вот вывод моего кода:

[ { _id: '05-09-2019', count3: 1 },
  { _id: '06-09-2019', count3: 1 },
  { _id: '06-21-2019', count3: 1 },
  { _id: '06-30-2019', count3: 5 },]

Как мне добиться этого:

[ { _id: '05-09-2019', count: 1,  branch: America, count2: 1},
  { _id: '06-09-2019', count: 1,  branch: Germany,count2: 1},
  { _id: '06-21-2019', count: 1,  branch: Philippines,count2: 1},
  { _id: '06-30-2019', count: 5 , branch: Vietnam,count2: 1},]

Вот мой код для получения различных значений даты при ее подсчете:

router.get('/blooddonationarea', function(req, res) {
        Blooddonation.aggregate([{$group: {_id : "$date" , count :{$sum:1}}},{$sort: {_id: 1}}],function(err, date) {     
        res.json({ success: true, date: date });
        //console.log(date);
        });  

    });

Я попытался вставить это после предложения [], ноон вообще не получает значений

[{ $match: { branch: { $eq: 'Rizal' } } },{$group: {_id : "$date" , count2 :{$sum:1}}},{$sort: {_id: 1}}]

Вот пример документа:

_id:5c1f47dd59cdd931f4ce98ae
blood_product_donated:"Whole Blood"
branch:"Rizal"
deferral_type:"permanent"
date:"10-22-2019"

1 Ответ

0 голосов
/ 18 января 2019

Можно начать с группировки документов по ключам даты и ветви, а затем еще одним шагом конвейера, при котором вы группируете только по ключу даты в документах из предыдущего конвейера.Следование этому примеру даст вам желаемый результат:

router.get('/blooddonationarea', (req, res) => {
    Blooddonation.aggregate([
        { '$group': {
            '_id': { 'date': '$date', 'branch': '$branch' },
            'count': { '$sum': 1 }
        } },
        { '$group': {
            '_id': '$_id.date',
            'count': { '$sum': '$count' },
            'branch': { '$first': '$_id.branch' },
            'count2': { '$first': '$count' } 
        } },
        { '$sort': { '_id': 1 } }
    ], (err, date) => {
        console.log(date);
        if (err) throw err
        res.json({ success: true, date });
    });
});
...