2016-07-30 128 views
0

我有一個用戶文檔,它有一個名爲activityLog的數組字段。用戶需要記錄的每個動作都需要記錄下來。 但是,我知道MongoDB在16MB上限文檔大小。 如果此陣列需要能夠容納數百萬個項目,是否不會超過文檔大小限制?我該如何處理?如何在MongoDB中處理大數組?

請普遍回答這個問題,即一些通用陣列需要可能持有數以百萬計的項目

+0

*如果這個數組需要能夠容納數百萬個物品...... *爲什麼?你打算在過去兩年中保持用戶活動嗎?這真的有道理嗎? – Rahul

+0

因爲如果用戶刪除了他們的帳戶,我們需要能夠撤消他們所有的動作,比如他們喜歡某個帖子的任何地方...... – Russell

回答

0

從你描述的使用情況下,它看起來像活動日誌屬於一個單獨的集合。正如您已經提到過的,您不能將日誌嵌入到用戶中,因爲數據量增長很多,並且可能會超過16 MB文檔大小,因此使用引用是一種方法。接下來,您必須決定是從用戶引用日誌還是從日誌引用到用戶(父引用)。擁有對用戶日誌的引用數組並不如父引用好,因爲它仍然可以溢出文檔大小限制,而且每次檢索用戶時都幾乎不需要所有用戶歷史記錄。