MongoDB通常适用于64位操作系统,32位系统只能寻址4GB内存,意味着数据集包含元数据和存储达到4GB,Mongodb就无法存储额外的数据了,强烈建议32位系统使用Mongodb可以自己测试使用,生产环境一地使用64位操作系统。
最大文档大小有助于确保单个文档不会使用过多的RAM或在传输过程中占用过多的带宽。要存储大于最大大小的文档,MongoDB提供了GridFS API。
MongoDB支持BSON文档嵌套的级别不超过100。
数据库命名限制
由于数据库名称在MongoDB中不区分大小写,因此数据库名称不能仅因字符的大小写而不同。
对于在Windows上运行的MongoDB部署,数据库名称不能包含以下任何字符:
/. "$*<>:|?
对于在Unix和Linux系统上运行的MongoDB部署,数据库名称不能包含以下任何字符:
/. "$
数据库名称也不能包含空字符。数据库名称不能为空,并且必须少于64个字符。
集合命名限制
集合名称应以下划线或字母字符开头,并且不能:
包含
$
。
是一个空字符串(例如""
)。
包含空字符。
以system.
前缀开头。(保留供内部使用)
集合名称空间的最大长度为120个字节,其中包括数据库名称,点(.
)分隔符和集合名称(即<database>.<collection>
)
字段命名限制
字段名称不能包含
null
字符。
*字段名称不能以美元符号($
)字符开头。
其他情况,从MongoDB 3.6开始,服务器允许存储包含点(即.
)和美元符号(即$
)的字段名称。
mognodb 不支持重复的字段名称,即使程序插入成功,没有抛出异常,驱动程序会导致在插入之前默认删除重复值。
命名空间
集合名称空间的最大长度为120个字节,其中包括数据库名称,点(
.
)分隔符和集合名称(即<database>.<collection>
)
在版本3.0中更改。对于MMAPv1,名称空间的数量限于名称空间文件的大小除以628,一个16 MB的名称空间文件可以支持大约24,000个名称空间。每个集合和索引都是一个名称空间。
WiredTiger存储引擎是不是受到这个限制。
这也是为什么在MongoDB4.2从4.2版开始,删除不推荐使用的MMAPv1存储引擎的原因。
副本集
在Mongodb3.0中副本集成员最最多支持50个,也就是说副本集做大支持50个节点,副本集每个节点数据支持32T,副本集每个实例建议数据不要超过4T,数据量大备份恢复时间会很长。
存储限制
我们通常分片会使用默认的chunk大小为64M,如果我们的分片key (片键)values值是512字节,分片节点支持最大32768个也就是最大支持数据量为32768TB。
一个片键大小不能超过512字节。