Это просто другой подход, поскольку вы пытаетесь использовать модель документа в качестве основного объекта и несколько коллекций для различных типов. Это также звучит так, будто на столе может быть только столько людей, а каждый человек может быть только на столе.
В таблице может быть много людей, но в таблице может быть уникальный человек
Человек может быть только частью одного стола.
Лично я не думаю, что для ВАШ варианта использования является проблемой наличие ссылки как в таблице, так и в человеке. Было бы глупо пытаться создать таблицу мостов, и NoSQL не обязательно соответствует тем же правилам нормализации для баз данных SQL. При этом более масштабные приложения могут отличаться. Я думаю, что проблема людей в общем заключается в том, что каждый хочет использовать архитектуру высокого уровня и сложную теорию в случаях использования, которые не принесут ей никакой пользы. Поиграйте и посмотрите, что работает, и просто изучите, как ваше решение может масштабироваться в гораздо большем / сложном наборе данных.
Даже если бы на вашей свадьбе было 1000 человек, я сомневаюсь, что это будет проблемой. В качестве справки, просто ради общей практики, хорошо подумать о том, какую базу данных вам нужно использовать для вашего типа данных. Если у вас много реляционных данных, MongoDB может быть выполнена таким образом, но производительность может упасть по сравнению с традиционной базой данных SQL из исследований и работ, которые я выполнял в прошлом. Этот материал должен быть продуман до выбора вашей технологии.
Поскольку вы используете Mongoose, вы можете легко ссылаться на другие объекты через ObjectId, и запросы должны быть простыми.
Если вы ударите его по пользователю, вы можете запросить таблицу по таблице ref в коллекции Users. Это не обязательно должно быть в обоих направлениях, и, поскольку у вашего пользователя может быть только одна таблица, кажется, что нет необходимости делать оба варианта.
Думайте об этом так. Например, у вас может быть таблица с 10 пользователями.
Когда вы смотрите на пользователя, вы хотите узнать, за каким столом он находится. Это означает, что когда вы запрашиваете коллекцию таблиц, вы должны запрашивать каждую запись, которая может иметь другой массив пользователей. Поиск, вероятно, намного медленнее, чем поиск, который просматривает отдельное свойство для каждого пользователя.
Просто хотел предложить понимание того, как вы можете это сделать. Я не буду говорить, что является лучшим, потому что могут быть другие переменные, которые я не учитываю. Тем не менее, я бы, вероятно, просто положил это на пользователя. Выясните, что работает лучше для вас.