2
我有兩個文檔集:在MongoDB中快速相關的標籤搜索
Wiki和WikiTags。由於我想靈活編輯標籤名稱,我不想將標籤本身嵌入到wiki文檔中。所以,我在wiki文檔中存儲了一個wiki_tag_ids列表。
我想知道使用此模式來查找相關標籤的最佳方法是什麼。通過相關標籤我的意思是標籤存在於其他wiki中,並用選定標籤標記。
可能我應該在WikiTag文檔中存儲相關標籤?
我有兩個文檔集:在MongoDB中快速相關的標籤搜索
Wiki和WikiTags。由於我想靈活編輯標籤名稱,我不想將標籤本身嵌入到wiki文檔中。所以,我在wiki文檔中存儲了一個wiki_tag_ids列表。
我想知道使用此模式來查找相關標籤的最佳方法是什麼。通過相關標籤我的意思是標籤存在於其他wiki中,並用選定標籤標記。
可能我應該在WikiTag文檔中存儲相關標籤?
我建議你應該在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數組可以輕鬆完成。如果性能是一個問題 - 使用嵌入。
希望這會有所幫助。
你對'相關標籤'的定義是什麼?這些是爲每個標籤預定義的,還是基於與其他標籤結合使用而動態確定的?請更新您的問題並詳細說明這些「相關標籤」以及您想要實現的目標。 – 2010-11-03 12:45:39
我認爲我們需要更多細節。 「相關標籤」是一個非常開放的概念,可能意味着很多事情。關於我的頭頂,我會預先計算每個標籤的相關標籤並根據需要加載,但細節在此處非常重要。 – 2010-11-04 18:14:40