使用MongoDB
在Windows上使用Mongodb是非常反人類的,好在docker能夠快速的搭建一個mongo的環境。
docker pull mongo
在執行上述命令后,docker會拉取mongodb的docker鏡像,在complete之后即可啟動docker。
docker版本的mongo啟動分為兩步,和linux啟動一樣。
//啟動服務
docker run -d --name mongod -p 27107:27107 -v /data/db/mongo:/data/db mongo
//啟動cli 并連接到mongod
docker run -it --name mongo-cli --rm --link mongod:mongod mongo mongo --host mongod
此時就已經連接上mongod開始操作了~
基于shell的CRUD操作
啟動mongo shell的方式如上節中docker啟動的方式即可,如果是在原生的linux上安裝的mongo,可以參考菜鳥教程 mongodb連接。
mongoDB對象ID格式
mongoDB的對象Id能夠保證在全局唯一,所以能夠安全的在客戶端為文檔分配ID,不會出現重復的情況。
開頭4字為標準的Unix時間戳,編碼了從新紀元開始的描述,接下來3字節存儲了機器ID,隨后2字節是進程ID,最后3字節是進程局部計數器,每次生成ID后計數器都會加一。
Gson
對于MongoDB來說,其腳本和存儲格式都像Js和Json一樣,但是在Java驅動中,Mongo提供了一個Gson的Java對象來存儲信息,一直不明白為什么。但是,最近看了Mongo University的MJ101課程,發現MongoDB自己設計并使用Gson的原因在于Json的能力還不夠,對于二維坐標、日期、時間等類型的數據都只能用數組和字符串來存儲,這樣給數據庫的設計帶來的限制,因此MongoDB自己設計了Gson格式,在不改變基礎Json結構的情況下,增加了對于二維坐標、日期、時間的功能擴展,能夠快速的計算時間、空間關系等。
接下來
Mongo的shell插入和增刪改查事實上沒有太多困惑的地方,比Mysql要簡單的多,MongoDB也提供了超級好用的GUI客戶端,非常強悍的分析功能和可視化展示,因此下一篇將會是如何使用Java來操作Mongo,這才是我們Java程序員真正關心的操作。
Java的操作會使用原生的Mongo Driver,因為發現現在脫離Spring已經快要不會寫代碼了。