2011-09-16 74 views
0

嗯,我正在計劃一個集合模式,我已經決定如何在標籤字段中嵌入數據。MongoDB最佳實踐查詢WHERE IN與標籤和孩子

我有一個總彙命名的產品:

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: 'roastbeef' +標籤: '熱' +子標籤: '醬'

或過濾方式: + PRODUCT_NAME:「roastbeef 「 +標籤:‘熱’ +子標籤:」醬」 +子標籤:‘刀’ +標籤:‘晚餐’

過濾時父標籤總是需要,而子標籤都是可選的。

如何在最後執行正確的集合來完成這種類型的查詢?

+1

我不明白的父/子標籤的概念。標籤是標籤。如果您想要製作強制性/可選過濾器,只需在原始標記文檔中添加「可選:真」字段即可。不需要有兩個集合。 –

+0

你合併了標籤和子標籤集合嗎?對不起,我編輯了我的答案我錯過了1個字段的子標籤集合 – sbaaaang

+0

問題是產品可以有標籤但不能有標籤子,所以我想我需要將它們分成兩個不同的集合,不是嗎?:P – sbaaaang

回答

2

閱讀此內容;我詳細一點這裏描述架構:

真的是沒有持股待這個關鍵的表格,如它們都只是標籤結束的理由。您仍然可以使用上述建議的模式搜索數據庫中的多個標籤;同時顯示所有可用的標籤以及與上述模式的關係;這樣它清理你的整個數據庫,而不是用MongoDB不需要的額外表格來搗亂它。

我強烈建議重新閱讀本電子書,以加強對Mongo授權給您的NoSQL格式的理解。

+0

ehe ok謝謝,我現在明白了! ;) – sbaaaang

+0

沒問題;它使用MySQL之類的東西確實是一個很大的調整,但是一旦你掌握了它的內容,它太棒了! – Petrogad

+0

是的,我希望,我也覺得:)! – sbaaaang