我有一个集合,其中只有一个文档。在此文档中,我有几个数组和其他嵌套的数组。我在某处读到文档的最大大小不能超过集合中的16MB。我的收藏设计有误吗?有什么解决办法吗?现在我们的产品即将发布,我不确定该怎么做
core collection:
{
schools:[{
_id:ObjectId(),
name:"abc",
abc1Arr[{},{},{}]
}],
xyz:[{},{},{}],
}
一个文档大小不能超过16MB。是吗?
答案 0 :(得分:0)
是的,最大文档大小为16mb。
很难说这种设计模式对您有好处(可能没有)还是不利 产品,因为我不知道您的查询外观,存储在数组和嵌套数组中的内容等等。
但是,假设一个数组包含类似的“对象”,则更好的设计模式是让您的单个文档包含ID的数组 并将这些ID链接到您要打开的新集合中的文档。 进行转移不应该太困难,以免迅速执行。
如果您要添加更多有关如何在阵列中构建数据以及为什么目的我可以提供更深入见解的信息。
答案 1 :(得分:0)
是的,BSON的最大值是16MB,您可以使用GridFS API来存储大数据。 https://docs.mongodb.com/manual/reference/limits/
答案 2 :(得分:0)
不要通过增加文档的大小来增加数据集。通过添加新文档来扩展数据集。将数组变成集合。
学校的排列应该是它自己的收藏。 xyz
文档应位于其自己的集合中,并具有对schools
集合中每个元素的引用。
这只是一个猜测,实际的布局将取决于您的插入率(使用insert添加文档总是比更新大型数组快得多)和您的查询模式。您的查询模式将确定如何索引数据。