ВНУТРЕННИЙ ВСТУПИТЬ с GROUP BY в MongoDB - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь сделать ВНУТРЕННЕЕ СОЕДИНЕНИЕ с GROUP BY в MongoDB. Я не получаю никаких ошибок, но и никаких результатов.

TableOne:


| Сайт | Запускается | дата |


|Google |900 | 2019-10-13 |

|FB |300 | 2019-10-10 |

|Yahoo |100 | 2019-10-11 |


TableTWO:


| Отделка | дата |


|5 | 2019-10-13 |

|4 | 2019-10-10 |

|3 | 2019-10-11 |

Требуемый выход:


| Сайт | Запускается | дата |Отделка |

|Google |900 | 2019-10-13 |5 |

|FB |300 | 2019-10-10 |4 |

|Yahoo |100 | 2019-10-11 |3 |


SQL:

SELECT a.site, r.date, SUM(a.starts), SUM(r.finishes) FROM tableONE a INNER JOIN tableTWO r 
ON a.site = r.site
GROUP BY a.site, r.date
ORDER BY 1

Мой запрос MongoDB:

db.tableONEaggregate([
        {
            '$match': { 'date': {
                        '$gte': '2019-09-19',
                        '$lte': '2019-10-19'
        } }
        }, 
        { '$lookup': {
                'localField': 'site',
                'from': 'tableTWO',
                'foreignField': 'site',
                'as': 'site_yo'
        } },
            { '$unwind': '$site_yo' },
         {
            '$group': {
                '_id': {
                    'site': '$site',
                    'date': '$site_yo.date',
                },
                'starts': {
                    '$sum': '$starts'
                },
                'finishes': {
                    '$sum': '$finishes'
                }
            }
        }, {
            '$project': {
                '_id': 0,
                'site': '$_id.site',
                'date': '$_id.date',
                'starts': '$starts',
                'finishes': '$starts'
            }
        }, {
            '$sort': {
                'starts': -1
            }
        }, {
            '$limit': 100
        }
    ])

Я не получаю никаких результатов. Что нам не так с моим монго-запросом?

1 Ответ

0 голосов
/ 21 октября 2019

Я полагаю, вы используете ложный внешний ключ в вашем Join. Если вы хотите объединить две таблицы, вы должны использовать ON primarykeyOfTable1 = ForeignkeyOfTable2. В вашем случае это будет

SELECT a.site, r.date, SUM (a.starts), SUM (r.finishes) FROM tableONEВНУТРЕННЯЯ СОЕДИНИТЕЛЬНАЯ СТОРОНАTWO r ON a.date = r.date GROUP BY a.site, r.date ЗАКАЗАТЬ НА 1

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