使用MongoDB
在Windows上使用Mongodb是非常反人類的,好在docker能夠快速的搭建一個(gè)mongo的環(huán)境。
docker pull mongo
在執(zhí)行上述命令后,docker會(huì)拉取mongodb的docker鏡像宰睡,在complete之后即可啟動(dòng)docker惹挟。
docker版本的mongo啟動(dòng)分為兩步茄螃,和linux啟動(dòng)一樣。
//啟動(dòng)服務(wù)
docker run -d --name mongod -p 27107:27107 -v /data/db/mongo:/data/db mongo
//啟動(dòng)cli 并連接到mongod
docker run -it --name mongo-cli --rm --link mongod:mongod mongo mongo --host mongod
此時(shí)就已經(jīng)連接上mongod開始操作了~
基于shell的CRUD操作
啟動(dòng)mongo shell的方式如上節(jié)中docker啟動(dòng)的方式即可连锯,如果是在原生的linux上安裝的mongo归苍,可以參考菜鳥教程 mongodb連接。
mongoDB對(duì)象ID格式
mongoDB的對(duì)象Id能夠保證在全局唯一运怖,所以能夠安全的在客戶端為文檔分配ID拼弃,不會(huì)出現(xiàn)重復(fù)的情況。
開頭4字為標(biāo)準(zhǔn)的Unix時(shí)間戳摇展,編碼了從新紀(jì)元開始的描述吻氧,接下來3字節(jié)存儲(chǔ)了機(jī)器ID,隨后2字節(jié)是進(jìn)程ID,最后3字節(jié)是進(jìn)程局部計(jì)數(shù)器盯孙,每次生成ID后計(jì)數(shù)器都會(huì)加一鲁森。
Gson
對(duì)于MongoDB來說,其腳本和存儲(chǔ)格式都像Js和Json一樣振惰,但是在Java驅(qū)動(dòng)中歌溉,Mongo提供了一個(gè)Gson的Java對(duì)象來存儲(chǔ)信息,一直不明白為什么骑晶。但是痛垛,最近看了Mongo University的MJ101課程,發(fā)現(xiàn)MongoDB自己設(shè)計(jì)并使用Gson的原因在于Json的能力還不夠桶蛔,對(duì)于二維坐標(biāo)榜晦、日期、時(shí)間等類型的數(shù)據(jù)都只能用數(shù)組和字符串來存儲(chǔ)羽圃,這樣給數(shù)據(jù)庫(kù)的設(shè)計(jì)帶來的限制乾胶,因此MongoDB自己設(shè)計(jì)了Gson格式,在不改變基礎(chǔ)Json結(jié)構(gòu)的情況下朽寞,增加了對(duì)于二維坐標(biāo)识窿、日期、時(shí)間的功能擴(kuò)展脑融,能夠快速的計(jì)算時(shí)間喻频、空間關(guān)系等。
接下來
Mongo的shell插入和增刪改查事實(shí)上沒有太多困惑的地方肘迎,比Mysql要簡(jiǎn)單的多甥温,MongoDB也提供了超級(jí)好用的GUI客戶端,非常強(qiáng)悍的分析功能和可視化展示妓布,因此下一篇將會(huì)是如何使用Java來操作Mongo姻蚓,這才是我們Java程序員真正關(guān)心的操作。
Java的操作會(huì)使用原生的Mongo Driver匣沼,因?yàn)榘l(fā)現(xiàn)現(xiàn)在脫離Spring已經(jīng)快要不會(huì)寫代碼了狰挡。