Структура коллекции MongoDB - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть коллекция с именем User.

У пользователя много информации, которую можно сгруппировать, например:

{address : {street:"xx", city:"xx"}}
{history: {school:"xx", job: "xx"}}
{..}

Итак, я хочу знать, что такое лучшая практика

1. First way, Using nested fields:

{user: 
  {address : {street:"xx", city:"xx"}}
  {history: {school:"xx", job: "xx"}}
  {..}
}

2. Second way: Just put them all together.

    {user: 
      street:"xx", 
      city:"xx",
      ...
      school:"xx", 
      job: "xx",
      ...
    }

Первый способ, очевидно, более читабелен для людей, и ему легче находить соответствующую информацию.

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

1 Ответ

0 голосов
/ 11 ноября 2018

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

Если вы располагаете дополнительными данными в отдельных коллекциях, это может обеспечить более быстрый доступ к поиску / обновлению этих данных (в зависимости от ваших индексов). MongoDB позволяет индексировать поля в массивах

Мое предложение состоит в том, чтобы попытаться составить список наиболее распространенных вариантов использования доступа к данным, создать тестовую базу данных с МНОЖЕМ ложных данных, а затем протестировать производительность с использованием запросов и агрегатов, чтобы отложить различные варианты моделирования хранилища.

...