數據庫
-
【強制】數據庫命名禁止使用任何
_
(下劃線)外的特殊字符,禁止使用數字打頭的庫名,數據庫名最多爲 64字符。- 反例: 3pan / db_$test /
-
【推薦】數據庫名全部使用小寫
- 反例:Parents PARENTS
集合
- 【強制】mongodb集合命名全部小寫,禁止使用任何
_
(下劃線) 以外的特殊字符,禁止使用任何_
(下劃線) 以外的特殊字符,集合名稱最多爲 64字符
- 正例:user
- 反例:user$
- 【推薦】同一模塊的集合儘可能使用相同的前綴名,即<模塊標識>_<表標識>,集合名稱儘可能表達用途
- 正例:
- 數據表:order_header, order_detail
- 編碼表: base_test
- 日誌表: log_app
文檔
-
【強制】文檔中的 key 禁止使用任何
_
(下劃線)以外的特殊字符,禁止使用 _id ,如:- 正例: user_id
- 反例:向 _id 中寫入自定義內容中寫入自定義內容
-
【推薦】儘量不要讓數組字段成爲查詢條件
-
【推薦】儘量存放統一了大小寫後的數據
-
【推薦】內聯文檔不能超過三層
-
【強制】同一集合下的文檔同一字段類型必須一致
-
【強制】字段命名採用駝峯命名
-
【強制】字段類型爲布爾值的字段命名以
is
開頭 -
【推薦】“父引用” 字段以
_
開頭 -
【推薦】引用字段類型爲
ObjectId
,子引用數組元素類型爲ObjectId
索引
-
【強制】索引名稱長度不要超過 128 字符
-
【強制】創建索引時使用後臺模式,避免鎖死
- Mongo鎖有一種臨時放棄機制,當出現需要等待慢速IO讀寫數據時,可以先臨時放棄,等IO完成之後重新獲取鎖。
- 如果在前臺構建會創建一個(優化策略:不會臨時放棄)的寫鎖,如果集合的數據量很大,建索引通常會很耗時
-
【推薦】儘可能的將單列索引併入組合索引以降低數量
- 索引越少,更改文檔時需要維護的索引就越少,效率就越高
-
【推薦】儘量遵循最左前綴原則
- 索引{“a”:1, “b”:1}, 可以匹配的查詢
- { “a”: “hello”, “b”: “world”}
- {“b”:“world”, “a”:“hello”}
- {“a”: “hello”}
-
【推薦】創建組合索引時將唯一值多的字段放在前面
-
【強制】禁止在數組字段上創建索引