Я бы реализовал следующим образом.
Допустим, мы используем
Mongoose. При этом у нас есть схемы
Category и
Product. Одно из полей Product, как Вы заметили, ссылается на Category. В Category же я сделал бы
виртуал "Products", представляющий собой массив (виртуал - то, что не хранится в БД, но модель его заполняет, следуя некоторой логике: здесь, например, будет заносить в массив все продукты, которые ссылаются на нее). Не забудем создать категорию
"uncategorized"
Так. Это был предварительный этап. Теперь основное. При удалении любой категории проходимся по ее виртуальному массиву "products" и для всех продуктов меняем ссылку с данной категорией на ссылку на категорию "uncategorized". Профит!