2013-05-14 3 views
0

Я совершенно новый для MongoDB и я застрял с помощью простых (или нет) проблем:Извлечения различного значения полей из коллекции MongoDB

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

{ "_id": "1", "tags": { "shape" : [ "shape1","shape2" ], "color": [ "col1","col2" ] }, 
{ "_id": "2", "tags": { "shape" : [ "shape3","shape4" ], "color": [ "col3","col4" ] }, 
{ "_id": "3", "tags": { "otherCategory" : [ "value1" ], "color": [ "col5","col6" ] } 

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

[ "shape", "OtherCategory" ] 

Как я могу добиться этого? на данный момент кажется, что мой единственный вариант - найти все теги и разобрать его вручную в java-клиенте ... кажется плохим ;-)

Я запрашиваю mongodb от java spring client.

Благодарим за помощь.

+0

Я думаю, что есть еще один способ сделать это - использовать Map/Reduce, потому что 'Aggregation' в MongoDB работает через документы, а не через коллекции. – Konstantin

ответ

1

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

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

+0

Рефакторинг вашей схемы для удовлетворения ваших потребностей в доступе - это, как правило, хорошая идея :) – Jinxcat

Смежные вопросы