2016-07-30 131 views
0

我有一个用户文档,它有一个名为activityLog的数组字段。用户需要记录的每个动作都需要记录下来。 但是,我知道MongoDB在16MB上限文档大小。 如果此阵列需要能够容纳数百万个项目,是否不会超过文档大小限制?我该如何处理?如何在MongoDB中处理大数组?

请普遍回答这个问题,即一些通用阵列需要可能持有数以百万计的项目

+0

*如果这个数组需要能够容纳数百万个物品...... *为什么?你打算在过去两年中保持用户活动吗?这真的有道理吗? – Rahul

+0

因为如果用户删除了他们的帐户,我们需要能够撤消他们所有的动作,比如他们喜欢某个帖子的任何地方...... – Russell

回答

0

从你描述的使用情况下,它看起来像活动日志属于一个单独的集合。正如您已经提到过的,您不能将日志嵌入到用户中,因为数据量增长很多,并且可能会超过16 MB文档大小,因此使用引用是一种方法。接下来,您必须决定是从用户引用日志还是从日志引用到用户(父引用)。拥有对用户日志的引用数组并不如父引用好,因为它仍然可以溢出文档大小限制,而且每次检索用户时都几乎不需要所有用户历史记录。