2014-01-07 4 views
0

Я полностью новичок в MongoDB и смотрю на перенос кода базовой стойки (для многих проектов) на него с использованием JDO как агностического слоя. Поэтому я задаю этот вопрос с точки зрения разработчика Java, который любит работу с фасолью в качестве базовой единицы модели.Содержит ли MongoDB субдокумент с идентичными данными?

Мой вопрос касается поддокументов и независимо от того, существуют они независимо или внутренне консолидированы MongoDB. то есть, если бы я имел доменную структуру, как это:

Домашнее хозяйство - сбор лиц

Person 
- name 
- address 

Address 
- street 
- postcode 

Если бы я был документ на домашнее хозяйство было бы иметь несколько человек, но каждый человек будет иметь один и тот же адрес.

Будет ли каждый адрес представлять собой отдельный и отдельный объект в MongoDB (хотя они являются одним и тем же «классом» и имеют одинаковые значения. Или Mongo каким-то образом идентифицирует, что они относятся к одному и тому же объекту и внутренне хранят UID для каждый адрес?

что еще более важно. Если я обновить почтовый индекс для одного адреса это означает, что каждый член адрес поддокумента домохозяйства будет отражать эти изменения?

кажется, если это произойдет, то он сбивается в реляционную сферу, но без таких ссылок я вижу, что возникают ужасные неэффективности?

ответ

0

Mongo не будет дедуплицировать эти поддокументы для вас, нет. Если вы хотите нормализовать эти данные, вам необходимо сохранить эти адреса в другой коллекции (в идеале) и сохранить DBRefs в этих документах при сохранении прилагаемых документов. Использование чего-то типа морфия или весенних данных поможет справиться с этими ссылками для вас.

1

Если вы сохраняете данные через JDO, у вас есть выбор встраивания Person + Address в домашнюю страницу или сохраняться как отдельные объекты (так же, как вы делаете с РСУБД). Если вы храните как не внедренные, то можете ли вы иметь несколько копий одного и того же лица или один, упомянутый несколькими домохозяйствами. Если вы храните их как встроенные, то они встроены, поэтому часть домохозяйства, следовательно, информация дублируется.

Смежные вопросы