2010-11-03 70 views
2

我有兩個文檔集:在MongoDB中快速相關的標籤搜索

Wiki和WikiTags。由於我想靈活編輯標籤名稱,我不想將標籤本身嵌入到wiki文檔中。所以,我在wiki文檔中存儲了一個wiki_tag_ids列表。

我想知道使用此模式來查找相關標籤的最佳方法是什麼。通過相關標籤我的意思是標籤存在於其他wiki中,並用選定標籤標記。

可能我應該在WikiTag文檔中存儲相關標籤?

+0

你對'相關標籤'的定義是什麼?這些是爲每個標籤預定義的,還是基於與其他標籤結合使用而動態確定的?請更新您的問題並詳細說明這些「相關標籤」以及您想要實現的目標。 – 2010-11-03 12:45:39

+2

我認爲我們需要更多細節。 「相關標籤」是一個非常開放的概念,可能意味着很多事情。關於我的頭頂,我會預先計算每個標籤的相關標籤並根據需要加載,但細節在此處非常重要。 – 2010-11-04 18:14:40

回答

1

我建議你應該在Wiki文檔中存儲WikiTag。 Mongodb允許輕鬆更新,從嵌套集合中刪除單個文檔,這意味着'靈活編輯標籤名稱'。

收集這樣的:

wikis 
    { 
    _id, 
    wikiTags {_id, name, ...}, 
    ... 
    } 

因此,舉例來說,如果你想更新嵌套WikiTag名稱與id = SomeTagId,您可以:

db.wikis.update({'wikiTags.id':SomeTagId}, 
       {$set:{'wikiTags.$.name':"New Tag Name"}}, 
        false, 
        true) 

如果同比想刪除嵌套的數組項,你應該使用$unset , 增加新的項目:$push, $addToSet

所以,我想現在你看到任何操作與ne sted數組可以輕鬆完成。如果性能是一個問題 - 使用嵌入。

希望這會有所幫助。