@nexcode

Как правильно организовать хранение однотипной информации в MongoDB?

К примеру, есть такие структуры данных:
{
  key: string,
  value1: string,
  value2: string,
  value3: string,
  value4: string
}


Есть два способа хранить это в MongoDB.

Способ первый (вставка в документ субдокументов):
{
  _id: xxx,
  key1: {
    value1: string,
    value2: string,
    value3: string,
    value4: string
  },
  key2: {
    value1: string,
    value2: string,
    value3: string,
    value4: string
  },
  key3: {
    value1: string,
    value2: string,
    value3: string,
    value4: string
  },
  key4: {
    value1: string,
    value2: string,
    value3: string,
    value4: string
  }
}


Способ второй (использовать массив):
{
  _id: xxx,
  array: [{
    key: string,
    value1: string,
    value2: string,
    value3: string,
    value4: string
  }, {
    key: string,
    value1: string,
    value2: string,
    value3: string,
    value4: string
  }, {
    key: string,
    value1: string,
    value2: string,
    value3: string,
    value4: string
  }, {
    key: string,
    value1: string,
    value2: string,
    value3: string,
    value4: string
  }]
}


Какой из способов является более рациональным, при условии преобладания операций обновления значений полей и вставки новых субдокументов.
  • Вопрос задан
  • 368 просмотров
Решения вопроса 1
@lega
Если вам нужен прямой доступ по key, например обновить по key, то 1-й удобнее
Если нужно добавлять/вычерпывать список, то удобнее 2-й

Агрегатный фреймфорк может разворачивать вложенные массивы, т.е. скорее 2-й будет лучше, но все равно зависит от данных и запросов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы