С mongo у меня было примерно так:
1) В БД создаётся коллекция, условно, "Категории товаров", где лежат ваши "Товар1", ... со всеми необходимыми параметрами + у каждого свой id, который монга генерирует. Кстати, url-ы тоже тут хранить удобно
2) В коллекции с товарами у каждого товара действительно появляется type , только там лежит id нужного объекта из "Категории товаров"
3) При переходе на страницу "Товар1" на бэкенде в запросе к БД передаются параметры для фильтрации (те же данные из url) . Не надо тянуть такие фильтрации на фронт. Зачем вам получать из БД лишние данные?
4) Фронт просто отображает всё, что пришло с бэка
ИМХО, это наиболее правильное решение, но при желании его можно как угодно упрощать, главная идея - фильтрация должна происходить на уровне БД или бэкенде, но никак не на фронте