2015-08-25 4 views
1

В настоящее время я работаю над созданием базы данных для хранения информации о стране-штате, которая позже будет использоваться из выпадающих меню на нашем веб-сайте.Хранение страны государственного города в MongoDB

Я хотел получить несколько предложений по схеме, которые я решил относительно того, насколько эффективно она будет работать.

Я использую MongoDB для хранения данных.

Схема, я разработал следующим образом:

{ 
_id: "XXXX", 
country_name: "XXXX", 
some more fields 
state_list:[ 
    { 
     state_name: "XXXX", 
     some more fields 
     city_list:[ 
      { 
       city_name : "XXXX", 
       some more fields 
      }, 
      { 
       city_name : "XXXX", 
       some more fields 
      } 

     ] 

    } 
] 

}

Данные будут увеличиваться. Также есть длинный список городов для каждого штата.

Насколько эта схема будет работать по назначению?

Должен ли я использовать технику связующих документов (для этого нужно будет использовать ручное кодирование для сопоставления _id)?

ответ

1

Я думаю, по мере увеличения ваших данных эта схема рухнет. Лучший способ - разбить базу данных в 3 схемах и использовать refrence своих идентификаторов.

Страна Schema:

{ 
_id: "XXXX", 
country_name: "XXXX", 
some more fields 
state_list:[{ 
    "_id": reference id to state object 
}] 
} 

Государственная схема:

{ 
_id: "XXXX", 
state_name: "XXXX", 
some more fields 
city_list:[{ 
    "_id" : reference to city object 
}] 
} 

Город Схема:

{ 
_id: "XXXX", 
city_name: "XXXX", 
some more fields 

}

+1

Почему это * лучший способ? Являются ли государственные и городские имена неограниченными по количеству? И является ли «лучшим» способом ссылаться на города по ID, или если OP включает идентификатор ID плюс, чтобы предотвратить множественный поиск документов? Точка: это * одна * возможность, многих. Ни один из них не является «лучшим» способом (поскольку мы ничего не знаем о приложении и его шаблонах доступа). Этот тип вопроса действительно запрашивает мнения, без правильного ответа (поэтому этот тип вопроса обычно закрыт как не по теме). –

0

Я хотел бы предложить, чтобы держать его 1-N по стране по отношению к государству, в то время как город быть отдельной коллекцией с stateid. У вас будет каждая страна с ограниченным числом государств, в то время как в штате будет много городов. Создание городов, вложенных в состояние, а затем государства, внедренные в страну, сделают страновую коллекцию слишком огромной. Общее понятие для создания дизайна схемы основывается на следующих критериях:

  1. 1-Мало (в этом случае вставлять коллекцию внутри родительского объекта

  2. 1-многие (в данном случае создать массив. идентификаторы внутри родительской коллекции и держать Чил коллекцию как индивидуальный.

  3. 1- scillions (в этом случае сохранить родительский идентификатор в дочернем объекте и сохранить их в виде отдельных коллекций.

Это link объясняет это намного лучше.

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