2011-07-24 70 views
2

因此,我正在研究一個寵物項目,我正在存儲各種文本文件。我有安裝我的應用程序保存的標籤,在我的收藏品中的一個字符串,一個例子是:在mongodb中爲文檔管理系統存儲/使用標籤

標籤:「Linux的Apache的WSGI」

將它們存儲和搜索爲他們工作得很好,但我的問題當我想要做一些類似標籤雲的事情,計算所有各種標籤,或者根據標籤製作一個動態選擇系統時,最好的辦法是打破它們的工作方式?或者我應該以其他方式存儲它們?

從邏輯上講,我可以掃描每個記錄並獲取所有標記,根據空間將它們分解,然後以某種方式緩存結果。也許這是正確的答案,但我想問社區的智慧。

我正在使用pymongo與我的數據庫進行交互。

回答

6

或者我應該以其他方式存儲它們嗎?

存儲標記的標準方法是將它們存儲爲數組。在你的情況下,數據庫會看起來像:

tags: ['linux', 'apached', 'wsgi'] 

...什麼是打破他們一起工作的最好方法?

這是Map/Reduce的設計目的。這有效地「掃描每個記錄」。 Map/Reduce的輸出是您可以查詢的另一個集合。

但是,還有另一種方法來做到這一點,這是保持「計數器」,並更新它們。所以當你保存一個新的文檔時,你也增加了與該文檔相關的所有標籤。

相關問題