简述
本文摘抄官方文档。
Bson文件
- Bson文档最大为16兆字节;
- 支持不超过100层的文档嵌套;
命名限制
数据库命名限制
- 数据库名称不区分大小写
对于Windows上运行的MongoDB,不能包含以下字符
1
/ \。“$ * <>:|?
对于Linux和Unix上运行的MongoDB,不能包含以下字符
1
/ \。“$
数据库名字不能包含空字符
- 数据库名称不能为空,且必须少于64个字符
集合命名限制
- 应该已下划线或者字母开通,但不能:
- 包含
$
符号 - 是一个空字符
- 包含空字符
- 以
system.
为前缀。(保留内部使用)\
- 包含
- 数据库名称+点号(.)+集合名称(即是
<database>.<collection>
)的字符长短不超过120个字节。
字段命名限制
- 同集合命名限制
索引限制(Index key Limit)
索引的条目的总大小,取决于Bson类型的结构开销,必须小于1024个字节。
超限制的报错
- 如果现有文档的索引条目超过
index key limit
,则MongoDB不会再这上面建立索引。 - 如果索引字段的索引条目超过,则重新编索引操作将会出错。 Reindexing操作是
compact
和repairDatabase
命令以及db.collection.reIndex()
方法的一部分。 - 索引字段对应的索引条目超过该索引集合,那么索引字段中的任何文档,不会插入到集合中,而是返回错误。以前版本会插入,但不索引这个文档。
- 更新这个所以字段将会出现的错误,如果这个更新值导致索引条目超过
index key limit
的限制,将会出错,更新失败。 mongorestore
和mongoimport
将不在插入包含索引的文档,该索引字段的对应的索引条目将要超过index key limit
。对于现有分片集合,
chunk migration
将会出现失败的原因,文档包含的索引字段将要超过索引条目的限制index key limit
其他限制
- 每个索引的集合数:一个集合可以有不超过64个索引
- 索引名称长度:及
<database name>.<collection name>.$<index name>
的组合不能超过128个字符。 - 复合索引:不能超过31个字段。
- 您不能将$text需要特殊文本索引的查询与需要不同类型的特殊索引的查询运算符结合使用。例如,您不能将$text查询与$near操作员组合在一起。
- 多键索引不能涵盖对数组字段的查询。
- 地理空间索引不能 覆盖查询。