@ivanesi

Хранение данных: обычный объект или ключ как значение?

Добрый день.
Использую документо-ориентированную БД (монго).
Пример структуры объекта:
contries = [
                  {
                     name: "Russia", 
                     cities: [ 'Moscow', 'Spb' ]
                  },
                  {
                    name: "Mongolia",
                    cities: ['Ulaahn', 'Hovd']
                  }
                ]

Дополнительных полей в объекте не предполагается.

Но для некоторых запросов мне удобнее использовать такое представление данных:
contries = [ 
                  { "Russia" :  [ 'Moscow', 'Spb' ] },
                  { "Mongolia" : ['Ulaahn', 'Hovd'] }
                 ]


Получается компактнее, но терзают смутные сомнения, что это может быть чем-то чревато.
Можете их развеять или поделиться недостатками второго подхода, пожалуйста?
  • Вопрос задан
  • 2483 просмотра
Пригласить эксперта
Ответы на вопрос 2
@askhat
Документ, в контексте Монги, это JSON объект, который, в свою очередь, является key-value набором. В первом приведенном вами примере key это name и cities, а value это строка с названием страны и массив городов. Во втором варианте key-ев нет, а это значит что не получится db.collection.find({ country: "Russia" }) и придется использвать полнотекстный поиск. Тут уж сами решайте.

И кстати: countries.
Ответ написан
Комментировать
@lega
Обычно удобнее что-б ключи были фиксированные - не нужно гадать/перебирать, что-б получить значение.
Проблема может возникнуть если вы в будущем добавите ещё по стране в каждый элемент или т.п.
Памяти это (почти) не сэкономит. Проблем с хранением не возникнет.

Если расширять не планируется и хорошо подходит под текущие запросы, то никаких проблем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы