В настоящее время я разрабатываю схему db для приложения, которое будет использовать mongodb и spring-data. Я совершенно новый для баз данных NoSQL и struggeling со следующей проблемой дизайна:Советы по дизайну схемы MongoDB
приложение будет иметь три простые объекты домена: Users
, Notes
и Tags
. Пользователи могут владеть несколькими Notes (1: n), и каждый примечание аннотируется с использованием одного или нескольких тегов (n: m).
Теперь моя проблема:, что я не могу понять, что является лучшим способом разработки отношений «один ко многим» между Notes и тегами.
Основная информация о запросе Notes для пользователя с помощью аннотированных тегов. Поэтому мой первый подход заключался в том, чтобы вставить теги внутри Notes. Я мог бы справиться с избыточностью здесь, так как я действительно хочу, чтобы часто выполнялись быстрые операции чтения и обновления Notes и/или тегов. Однако мне также нужно запросить список всех тегов пользователя (т. Е. Реализовать функции «вперед» при поиске заметок по тегам).
В настоящее время моего Примечания документы выглядят примерно так:
{
"id":"51bcf4a97aecbafaf5e79713",
"label":"Label of the Note",
"contents":"Contents of the Note",
"owner":"username",
"tags":[
{
"name":"Tag1",
"type":"default"
},
{
"name":"Tag2",
"type":"default"
}
]
}
Моих основными вопросов:
- Если я иду с вложением, что был бы наилучшим способом эффективного запроса для список всех тегов пользователя (без дубликатов)?
- Было бы лучше использовать ссылку на встраивание в эту настройку? Как я могу затем запросить для всех Notes, которые аннотируются со списком определенных тегов? (Возможно ли это вообще?)
Спасибо advanve за вашу помощь и советы :-)