Скажем, моя схема MongoDB выглядит так:
{car_id: "...", owner_id: "..."}
Это отношение много-ко-многим. Например, данные могут выглядеть так:
+-----+----------+--------+
| _id | owner_id | car_id |
+-----+----------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
| 6 | 3 | 4 |
| 7 | 3 | 5 |
| 8 | 3 | 6 |
| 9 | 3 | 7 |
| 10 | 1 | 1 | <-- not unique
+-----+----------+--------+
Я хочу получить количество автомобилей, принадлежащих каждому владельцу. В SQL это может выглядеть так:
SELECT owner_id, COUNT(*) AS cars_owned
FROM (SELECT owner_id FROM car_owners GROUP BY owner_id, car_id) AS t
GROUP BY owner_id;
В этом случае результат будет выглядеть так:
+----------+------------+
| owner_id | cars_owned |
+----------+------------+
| 1 | 3 |
| 2 | 2 |
| 3 | 4 |
+----------+------------+
Как я могу выполнить то же самое с помощью MongoDB с использованием структуры агрегации?