Монго БД лучшая практика для запроса ГДЕ с тегами и потомками - PullRequest
0 голосов
/ 16 сентября 2011

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

У меня есть коллекция названных продуктов:

products
       ->_id
       ->product_name
       ->tags

У меня есть коллекция тегов:

tags
    ->_id
    ->tag_name

и у меня есть коллекция tags_child:

tags_childs
      ->_id
      -> id_tag
      ->tag_child_name

теперь мне нужно сохранить теги и tags_childs в коллекцию продуктов, поэтому я подумал, что было бы неплохо сохранить в коллекции продуктов поле:

теги: [[_id_tag]: [_ id_tag_child, _id_tag_child, ... и т. Д.], [_ Id_tag]: [_ id_tag_child, _id_tag_child, ... и т. Д.]]

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

Так, например, мне нужно отфильтровать продукты по: + product_name: 'ростбиф' + тег: «горячий» + дочерний тег: «соус»

или фильтр по: + product_name: 'ростбиф' + тег: «горячий» + дочерний тег: «соус» + дочерний тег: «нож» + тег: «ужин»

При фильтрации всегда требуются родительские теги, а дочерние теги необязательны.

Как реализовать правильную коллекцию для выполнения этого типа запроса в конце?

1 Ответ

2 голосов
/ 16 сентября 2011

Чтение поверх этого; Я немного подробнее описал вашу схему здесь:

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

Я бы настоятельно рекомендовал перечитать эту электронную книгу, чтобы просто укрепить понимание формата NoSQL, с которым Mongo дает вам силы.

...