COUNT(*) FROM org_type_on_related_genre WHERE genre_id = :deletedGenreId and org_type_id IN (SELECT org_type_id FROM org_type_on_related_genre GROUP BY org_type_id HAVING count(*) > 1
нужно получить количество строк, в которых genre_id равен искомому id и при этом org_type_id этой строчки в данной таблице не уникален
Так сразу агрегацию не подскажу, но match по нужному genre_id, потом группировка по org_type_id и после фильтр по кол-ву элементов в получившихся группах
вам нужно в агрегации сделать первым стейджом group для подсчета уникальнах id с использованием $sum, потом стейдж match с фильтрацие больше 1 после фильтрации делаете $lookup к этой же коллекции для выборки доков c вашим доп услвоием genre_id и потом $project для подсчета количества элементов в массивах и потом сверху группировку с _id константой для общейго суммирования
Обсуждают сегодня