天天看点

mongodb的限制

  • 知道一个产品的限制所在,就可以更好的使用它。

    目前已知的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