2011-10-24 25 views
0

我正在嘗試使用Mongo存儲字頻數據。每個單詞都需要與用戶相關聯,以便我可以計算出每個單詞使用每個單詞的頻率。目前我收集的文字如下:存儲字頻數據

{'Hello':3, 'user_id':1} 

這顯然只適用於'一對一'的基礎,並不好。

我想了解如何最好地使這個用戶和單詞之間的'一對多'關係。我會存儲用戶的關係在我的文字收集像這樣:

{'word':"Hello", 'users':[{'id':1, 'count':4},{'id':2, 'count':10}]} 

或者我會附上字計數到用戶採集呢?

{'id':1, 'username':'SomeUser', 'words':[{'Hello':4}]} 

明顯的缺點,以第二種方法是,同樣的話會在不同的用戶使用,所以有一個詞集合,將有助於保持數據的大小了。

任何人都可以告訴我,我應該在這裏做什麼?有沒有我可能在文檔中忽略的方法?

回答

1

明顯的缺點,以第二種方法是,同樣的話 將在不同的用戶使用,有這麼一個簡單的詞 收集將有助於保持數據的大小了。

不,這就是使用文檔db的本質。數據大小實際上不是非sql解決方案中的問題,重要的是您可以輕鬆快速地訪問數據。

您的第一種方法是典型的教科書關係模型。在mongo中使用它沒有任何優勢(儘管你可以在mongo中以關係方式對其進行建模)。相反,第二種方法給你

  • 胖讀/寫,因爲每個單詞存儲在用戶內部。您不需要爲此執行多個查詢