Наличие всех отправленных форм и схем форм как документов в одной коллекции.
Вы хотите избежать этого (# 1). Простая причина здесь в том, что форма представление играет другую роль, чем форма схема . Смешивание их в одной коллекции усложнит запрос.
Иметь отдельные коллекции для всех схем форм и всех отправляемых форм
Чтобы уточнить, звучит так, будто вы предлагаете две коллекции: schema and
представление`.
Это логичный способ продолжить. У вас будет одна маленькая коллекция schema
и одна большая коллекция submission
.
Ключевым ограничением будут ваши запросы к этой коллекции submission
. Планируете ли вы делать запросы "по типам"? Или основные запросы сосредоточены на «типе представления»?
Если вы в конечном итоге включите «тип отправки» в каждый запрос, то имеет смысл ...
Создайте отдельную коллекцию для всех схем форм и создайте новую коллекцию для всех отправлений формы для каждой схемы.
Причина этого - просто индексы. Если у вас есть одна коллекция, вам понадобится указатель на «тип». Таким образом, создавая отдельные коллекции, вы можете сохранить индекс. Тем не менее, если вам когда-нибудь понадобятся функции шардинга, это может помочь в управлении многими коллекциями.
Конечно, вы можете обойти этот «дополнительный индекс», проявив творческий подход к _id
. MongoDB имеет автоматически сгенерированный ObjectId
, который он будет использовать по умолчанию, вроде идентификатора автоинкремента. Однако вы можете переопределить это и создать более умный _id
, что-то вроде submissionid_userid
.
Честно говоря, я предпочитаю последний вариант. Но на самом деле № 2 и № 3 являются хорошими вариантами, на самом деле это просто вопрос компромиссов с точки зрения сложности кода и сложности управления.