-
知道一個産品的限制所在,就可以更好的使用它。
目前已知的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