2013-05-14 44 views
0

我是很新的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客戶端解析它manualy ...似乎不好;-)

我從java彈簧客戶端查詢mongodb。

感謝您的幫助。

+0

我認爲還有一種方法可以使用Map/Reduce,因爲MongoDB中的「Aggregation」可以跨文檔工作,而不是跨集合。 – Konstantin 2013-05-18 11:51:17

回答

1

好吧,於是我結束了重構我的模型:它看起來不像Konstantin所說的那樣做一些Map/Reduce查詢文檔內容並不容易。

爲了解決這個問題,我創建了一個新的類別集合,以便我可以輕鬆選擇它們。插入產品時會填充此集合。

+0

重構您的模式以滿足您的訪問需求通常是一個好主意:) – Jinxcat 2014-02-05 10:02:31