MongoDB дизайн спекуляция - PullRequest
0 голосов
/ 10 мая 2018

Я копаю связанные с MongoDB вопросы / ответы, но одна вещь все еще не очевидна.

Рассмотрим следующую коллекцию товаров:

{
    "manufacturer": "Man1",
    "model": "Model1"
}

Допустим, у нас есть 1.000.000 продуктов, и я хотел бы создать выпадающий список производителей (максимум 50 вариантов).

В этом случае каждый раз, когда мне приходится использовать функцию .distinct () в этой огромной коллекции продуктов.

Это правильный способ сделать это? Я немного обеспокоен работой. Или я должен создать отдельную коллекцию для производителей и синхронизировать ее?

UPDATE

Спасибо за все ответы, я все еще рассматриваю их.

А что если я сделаю следующее:

Производитель:

{
   "name": "Man1", 
   "models": [
      {
          "name": "Model1", 
          "products": [Product1, Product2]
      }
   ],
}

и Продукт

{
    "manufcturer": "Man1",
    "model": "Model1"
    "manufacturer_id": Manufacturer1,
    "model_id", Model1
}

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

Вы можете создать отдельную коллекцию для производителей. Вы просто должны синхронизировать его после каждого добавления / обновления / удаления продукта из коллекции продуктов.

0 голосов
/ 10 мая 2018

Я думаю, что вы можете подумать о разработке своих коллекций товаров следующим образом:

{ "производитель": "Man1", "модель": "модель1" «Продукт»: [Продукт1, Продукт2] }

И наличие индекса «производитель» оптимизирует ваш запрос для получения списка производителей

0 голосов
/ 10 мая 2018

Во-первых. Если у вас большое количество записей, вы никогда не захотите загружать все данные одним запросом, чтобы заполнить список, раскрывающийся список или что-то еще. Скорее, реализация чего-то вроде load more параметров подходит больше. Так же, как нумерация страниц.

И вы можете получить около 20,40 записей за запрос и выполнить любую оптимизацию для этого небольшого куска данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...