我正在设计一个mongodb文档的结构,其中包含一个对象数组作为其中一个属性:
{_ id:xxx,someObjectAttribute:,someArrayAttribute:[{timeStamp:yyy,value:zzz},...]}
设想上面的'someArrayAttribute'可能需要保持数百万个元素,每个元素具有相同的{timeStamp,value}结构,并且将在其上进行聚合和过滤(例如,在一段时间内的值的总和) .
我想得到以下建议:
-
上述结构是否适用于所述元素量,以及是否存在明显的设计性能缺陷
-
可能包含的最大元素数'someArrayAttribute'
-
一个比上面更好的结构是否可以使用mongodb的内置聚合
在此先感谢,我很乐意澄清任何事情 .
1 回答
不,不行 .
文档限制为16MB的空间 . 只考虑以下因素,数百万不符合这一点:
没有
更不用说,更像是拥有非常小的对象的12,000,但即便如此,除非你将它分成文档中的块,否则你会遇到在这么大的数组上工作的性能问题 .
您可以拥有的唯一真实结构是一个集合中的父文档,而
someArrayAttribute
分成一个单独的集合 .我想,你可以在另一个集合或甚至同一个集合中的文档中放置
someArrayAttribute
的块,但这听起来乏味且不稳定 .