глубокое вложение или разная коллекция mongodb? - PullRequest
0 голосов
/ 30 июня 2010

Я пытаюсь найти наилучший способ хранения данных, используя mongodb и mongomapper.

У меня есть категория, и каждая категория может быть описана многими атрибутами, поэтому длина в мм, вес в кг и т. Д.

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

Итак, например:

пользователь А хочет сохранить свою категорию "автомобили" с количеством колес и длиной автомобиля в мм. пользователь B хочет хранить свою категорию «автомобили» с количеством колес и длиной в мм и весом в кг.

Категории одинаковы для всех, но атрибуты могут быть разными.

Должен ли я хранить это как коллекцию категорий, тогда каждая категрия содержит и массив пользователей, каждый из которых содержит хэш атрибутов anmes и единиц?

Или я должен как-то разбить это на несколько коллекций?

Или есть способ лучше кого-нибудь придумать?

Это проблема глубокого вложения?

Большое спасибо в Advancfe за помощь и советы. рик

1 Ответ

0 голосов
/ 07 марта 2011

Давайте начнем с простого ответа. Сохраните атрибуты как поля в документе товаров. Вот почему используется хранилище данных без схемы.

Теперь о том, какие атрибуты ведьмы ставить с каким предметом. Краткий ответ: любой из описанных вами способов будет работать; у всех есть некоторые компромиссы с точки зрения эффективности.

Я думаю, что ваша модель выглядит так:

  • Существует коллекция пользователей
  • Есть много коллекций предметов, называемых категориями
  • каждый элемент является членом категории
  • каждый пользователь имеет множество предметов
  • каждый элемент в категории имеет множество потенциальных атрибутов в зависимости от пользователя
  • некоторые пользователи будут делиться атрибутами

У меня были бы следующие коллекции: пользователи, * категории (например, автомобили, лодки, дома и т. Д.), Атрибуты.

Коллекция атрибутов будет содержать категорию (например, автомобили) и атрибуты элементов в этой категории (например, пробег топлива), а также список user_ids, которые используют этот атрибут.

...