1. 用關聯?仍是內嵌文檔?來存儲記錄 ------->看存儲的數據是否常常修改mongodb
2. single query即確保想要的數據在一次查詢中可以獲取到優化
3. 若是collection的document是無邊界的,儘可能不使用內嵌文檔spa
4. 對於複雜的collection(一般用於按期的存入數據),能夠事先在資源空閒的時候先建立,
並填入一些默認值,等要存儲實際數據時,更新collection便可。【就是預留空間】orm
5. self-sufficient: fast and slow【重點考慮數據一致性的要求有多高】對象
6. 慎用$where,不得不用的時候,應該是其做用的文檔集合儘量的小排序
7. 重寫"_id",注意其值的隨機度,另外儘可能避免用document做爲"_id"的類型索引
8. DBref什麼時候該用?沒法肯定引用物件類型的時候考慮使用ip
9. 索引能夠優化查詢,但當查詢的數據量》=collection文檔數量一半的時候,該考慮是否應該用索引。
(能夠經過測 試驗證使用索引時候的效率高仍是不使用索引的時候效率高)
10. 合理的組織文檔結構能提升mongodb的查詢效率 ci
11. Loading JavaScript form file: load(xx.js)資源
12. 是否應該考慮離線建立索引?備份索引【只能經過備份數據文件的方式才能備份索引】?索引壓縮?
13. 在mongodb中使用skip操做,要注意skip較大時候的處理【某些狀況下可使用反向排序】
14. 索引數據類型優化:int < ObjectID < String 【相同記錄數量下,索引所佔據的空間大小比較】
15. 選擇正確的文件系統,應該選擇分片空間快速的文件系統,儘可能不要用ext3,用ext4或者xfs
16. 若是用的是默認的ObjectId,能夠從ObjectId中獲取insert的時間【ObjectId對象.getTime(),ObjectId對 象.getTimeSecond()】