2013-12-11 3 views
0

Я перемещаю часть кода из MS SQL в MongoDb. В существующем SQLSERVER у меня есть таблица профилей, таблица тегов и таблица ProfileTag. Таблица тегов содержит все доступные теги, а таблица ProfileTag содержит теги для определенного пользователя.MongoDB Схема схемы с 3 таблицами

Мне нужна возможность поиска профилей по тегам, а также именам профилей. Итак, когда я разрабатываю схему MongoDB, мне все еще нужны все 3 класса или я могу удалить ProfileTag из списка? Я все еще пытаюсь обернуть голову вокруг дизайна документа.

public class Tag { 

} 

public class Profile { 
    public Address Address {get;set;} 
    public List<Education> EducationList {get;set;} 
    public List<Tag> ProfileTags {get; set;} 
} 

Это правильный подход при разработке схемы MongoDB?

Спасибо!

ответ

1

Согласно моему опыту, я думаю, что ваш подход находится в правильном направлении. Тегу профиля не требуется в качестве отдельной коллекции или класса в C#. Это может быть простой массив строк. В схеме монгодб может выглядеть так. В коллекции, если ваше имя профиля уникально, вы можете использовать его как _id, который будет автоматически индексироваться. mongoDB также позволяет индексировать массив, чтобы вы могли индексировать по ключу как теги, что улучшит поиск профилей на основе тегов. Все общие теги могут храниться в другой коллекции. Один момента вы должны иметь в виде, что в случае, если мастер тега обновляются вы должны насыпным обновление всех тегов профиля, как они встроены в коллекции профиля

 {_id: PROFILENAME , Tags : ["Tag1" , "Tag2" , "Tag3"] } 
+0

Спасибо, держат тег документы вне профиля документа а хорошая идея ? Это означает добавление таблицы ProfileTags с профилем в нем. Пользователь может добавлять или удалять теги, но он никогда не может обновить мастер-тег. – user636525

+0

@ user636525 См. В случае, если вы сохраняете свои теги профиля вне коллекции профилей, вам нужно будет сделать два вызова базы данных, чтобы показать пользователю профиля свои метки. Это также зависит от того, какой запрос вы собираетесь делать. – Devesh

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