На мой взгляд, архитектура хранения не очень правильная.
Делайте две коллекции. Одна для Категорий, вторая - для Товаров.
В Товар же добавьте поля: Бренд, Категория [array].
По характеристикам товара - у меня они, увы, не одинаковые, поэтому храню их в Товаре в виде массива объектов
{ name: Сапог сложный
sku: smart-shoozze-$Цвет$-$Размер$
....
Характеристики: [
{name: Цвет, value: Зеленый, type: checkboх, sku: GREEN},
{name: Цвет, value: Красный, type: checkboх, sku: RED}
]
....
}
Для вывода фильтров - делаете по этому полю агрегацию.
Если уж по существу - еще есть коллекция Остатки. А еще есть коллекция Медиафайлы.
Если совсем глубоко - сделано на эластике, но проблем с монгой быть не должно.