У меня есть страница продукта с URL-адресом в форме http://host/products/{id}/{seo-friendly-url}
, где часть "seo-friendly-url" может выглядеть примерно так: category/subcategory/product
.
Контроллер продуктов получает продукт с указанным идентификатором и затем гарантирует, что следующий URL-адрес является правильным для продукта - если это не так, пользователь перенаправляется на соответствующий URL-адрес (хотя все URL-адреса в магазине генерируются правильно, хотя перенаправление - это просто сохранение канонического URL-адреса в случае ошибочного ввода пользователем или изменения URL-адреса после его сканирования Google и т. д.). Идентификатор обеспечивает быстрый поиск продукта, а часть в конце обеспечивает переход ключевых слов в URL.
Чтобы проверить URL, у меня есть представление SQL, в котором используется рекурсивное общее табличное выражение для объединения фрагмента URL продукта с URL-адресами URL его родительской категории по всей иерархии (как правило, только 3).
Недавно я столкнулся с документно-ориентированным хранилищем, и я вижу, что оно очень полезно в различных ситуациях (например, у моих сущностей продуктов есть теги, цены и атрибуты для нескольких покупателей и т. Д., Все они в настоящее время находятся в разных таблицах).
Итак, на мой вопрос - как я могу достичь вышеуказанной функциональности в mongoDB, или есть лучший способ подумать об этом? Наивным способом было бы извлекать каждую категорию в иерархии по отдельности, но я предполагаю, что это будет медленно.
Связанный: я прочитал в документах, что пропуск / лимит для медленен для больших наборов результатов - будет ли это заметно для максимум, скажем, 10 страниц 25 продуктов, каждая из которых может присутствовать в категории розничных веб-сайтов?