- 知道一个产品的限制所在,就可以更好的使用它。
目前已知的mongodb限制如下:
- BSON Document Size:最大为16M
- 数据库:大小写敏感、数据库名称必须少于64个字符
- 集合名称不能包含如下信息:
contain the $.
be an empty string (e.g. "").
contain the null character.
begin with the system. prefix. (Reserved for internal use.)
域名不能包含. 或者null字符且不能以$开头 - 单个集合的索引数量不能超过64个,索引键长度(索引队列的大小)必须小于1k,查询不能既使用文本又使用地理空间索引。
- 索引名称长度不能大于128个字符
- 复合索引中索引域不能超过31个
- 2dsphere索引只能用于插入或者查询Geometries数据
- 地理空间和多键都不能覆盖查询
- 创建固定大小集合时,如果指定了max参数,则一个固定大小的集合不能超过2的32次方个文档
- 副本集的成员数不能超过50个,副本集的投票节点数不能超过7个,如果没有指定oplog的大小则mongodb创建的oplog大小不会大于50G
- group操作(可以使用aggregate替代)和不以shard key为前缀的唯一索引均无法在shading环境中使用,如果索引没有包含shard key当一个查询在mongos上运行时将无法使用该索引,mongodb不支持跨越shard节点的唯一索引除非该索引以所有shard key作为前缀,shard key不能超过512个字节,shard key不能是多键、文本、地理空间索引。
- 如果在chunk中的集合数量超过250000或者超过平均文档大小超过 chunk size指定大小的1.3倍则不会发生迁移动作。
- 1个shard key不能超过512个字节,shard key的索引类型不能是文本,多键,地理空间索引。而且单调递增/递减的shard key可能会引发shard cluster的插入性能下降,可以采用哈希或者选择一个不是单调递增/递减的key作为shard key
- 一旦shard 了一个集合,shard key和shard key的值都是不可变的。
- 如果mongodb无法使用索引来sort结果集,则会在内存中完成排序,但消耗的内存必须小于32M
- pipeline操作有100M的内存使用限制,超过限制mongodb会报错,如果需要处理大数据集,使用allowdiskuse选项。
- 2d Geospatial 查询不能使用$or操作符
- 对于球面查询,建议使用2dsphere索引
- 对于地理坐标而言,有效的经度值应该是在-180--180,有效的纬度值应该是在-90--90