Mongodb命名和文档限制
选用mongodb时,需要了解与mongodb数据大小,命名上的限制。针对这些限制,本文针对这些限制进行翻译整理。
BSON文档
mongodb中的数据记录,按照文档的形式保存。文档保存在一种类似于JSON的BSON结构中。Mongodb对BSON做了一些限制。
文档大小
BSON文档大小不能超过16MB
MongoDB通过限制文档大小,保证数据操作和传输的效率。使用MongoDB查询更新数据时, 数据加载到内存当中。当文档记录过大,占用过多的内存空间。导致加载和排序的速度变慢。同时, 文档过大占用更多的网络资源来传输数据。影响文档的查询效率。
文档层次
BSON文档深度不能超过100层
MongoDB支持嵌套字段,即字段值是对象,数组,字符串,时间等数据类型。这样丰富的数据类型,带来了数据保存的灵活性,增加了数据的层次。但读取保存多层次数据时。会为数据库造成大量的负载和开销。mongodb限制了文档的深度为100层。
命名限制
数据库名称限制(database name)
Mongodb数据库名称大小写敏感。即使用大写字母或小写字母区分,可以定义出不同的数据了。如sample_database与Sample_database代表两个不同的数据库。但mongodb的官方文档中,并不支持使用仅带有不同大小写字母的相同字母序列来区分两个数据库。使用上很难区分,容易出错。
- windows系统下,数据库名称中不能包含/\."$*<>:|?,也不允许包含空字符
- unix或linux系统中,数据库名称中不能包含/\."$,也不允许包含空字符
- 数据库名称长度不能超过64个字符
集合名称限制(collection name)
MongoDB 的数据库中包含多个集合,针对集合名称,mongodb有下面的几点限制和建议
- 使用小写字母或下划线开头
- 不可以包含$字符,空格字符,空字符
- 不能以system.开头, system.开头被保留在mongodb系统内部使用
- 包含下划线或数字开头的集合名称, 可以使用方法db.getCollection()方法获取集合对象
- 长度限制
- 4.4版本以后,不分片的集合和视图名称长度,不得超过255bytes, 分片集合和视图,不得超过235bytes。
- 4.2版本及4.2版本前,不分片的集合和视图名称长度,不得超过120bytes, 分片集合和视图,不得超过100bytes。
字段名称限制(field name)
对于单个字段名称,字段名称不可以包含空支付。但字段名称可以包含点(.)和dollar符号($)
_id字段限制
每一个集合中都必须存在_id字段,用户插入文档时, 可以指定_id字段。当用户没有指定_id字段时,mongodb为插入的文档添加默认的_id字段。对_id字段,mongodb有下面的一些限制。
- _id字段时Mongodb的保留字段,被用作集合的主键,唯一不可重复,值不可变
- 构成_id字段内容可以时数组类型外的任何BSON数据类型。如字符,数字,对象,时间等都可以作为_id字段值。
- 当使用对象定义_id字段时,子字段不可以使用符号$开头