MongoDB學(xué)習(xí)筆記(一)

mongodb一直有所耳聞,但由于公司業(yè)務(wù)架構(gòu)中并未重度使用(涉及到的地方開發(fā)人員自行維護并未接入主體架構(gòu)),所以一直以來沒有接觸。近期有空,準(zhǔn)備學(xué)習(xí)一下。本套筆記純當(dāng)做個記錄,記錄一下我的mongodb學(xué)習(xí)歷程。也希望能夠幫助瀏覽到的朋友們,新手可以跟我一起學(xué)習(xí)進步!高手請飄過~

當(dāng)然,學(xué)習(xí)一款數(shù)據(jù)庫,第一步要找到它的官網(wǎng)和官方文檔。

官方網(wǎng)站:不讓放
官方文檔:不讓放

老實說,界面風(fēng)格非常符合我的審美!有點喜歡它了~
簡單讀了它的介紹,我總結(jié)了幾點特性:

  • NoSQL類型之文檔類型數(shù)據(jù)庫
  • 部署,擴展都很靈活
  • 內(nèi)生的集群特性

其他還有什么高性能,API,支持多存儲引擎blabla,沒啥用~
這里產(chǎn)生了幾個疑問,留待后續(xù)學(xué)習(xí)去回答,我覺得帶著問題學(xué)習(xí)比較有效果。

1.MongoDB documents are similar to JSON objects.文檔中說mongodb存儲的基本單元叫文檔,類似于mysql當(dāng)中的一條記錄。跟大名鼎鼎的JSON對象類型很像,后續(xù)也讀到了,是BSON類型。那么到底兩者區(qū)別在哪里?

2.讀到了API這一節(jié),發(fā)現(xiàn)mongodb的API是自己獨有的,也就是說不能使用SQL語句進行查詢,即存在學(xué)習(xí)成本,那么,它的優(yōu)勢是什么?這種js類的API是否會導(dǎo)致查詢性能下降,這個很關(guān)鍵!

1.jpg

3.有預(yù)感,之前也有耳聞,mongodb的集群功能是它的一個靚點也是優(yōu)勢,后面的學(xué)習(xí)中要重點觀察它集群方面的設(shè)計思想!

好了,簡單了解之后,我用自己的話總結(jié)了一下:mongodb是一個非關(guān)系型數(shù)據(jù)庫,采用庫-表-行的形式進行存儲,官方叫庫-集合-文檔(whatever),不拘泥于schema設(shè)計,也就是說mysql中的在線DDL老大難問題在這里不存在!

接下來,就該動手了,今天計劃是先把它裝上,并插入第一條數(shù)據(jù)!

安裝這里,官方文檔中給出了yum安裝,二進制包安裝,docker方式等,至于docker,鑒于數(shù)據(jù)庫這種狀態(tài)機,最好還是別用了,畢竟哪一天真的用于生產(chǎn)了還是單獨部署穩(wěn)妥。(by the way!我個人審美:非狀態(tài)機強烈建議用docker,它真的方便...... 狀態(tài)機強烈不建議用docker,不要聽云廠商的忽悠!不要聽云廠商的忽悠!不要聽云廠商的忽悠!)

image.png

mongodb也分為企業(yè)版,免費版,以及提供了高級客戶端mongodb shell,這點怎么跟mysql一模一樣。
因為是新接觸,這次先用yum快速裝一下,后續(xù)再去了解二進制包方式。
安裝步驟如下:

1.安裝yum源:
vi /etc/yum.repos.d/mongodb-org-6.0.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

2.安裝默認最新版
yum install -y mongodb-org
安裝后的默認路徑:
/var/lib/mongo (the data directory)
/var/log/mongodb (the log directory)
如果想要查看默認安裝的各類信息可以執(zhí)行以下命令:
systemctl cat mongod
可以發(fā)現(xiàn)配置文件為:/etc/mongod.conf,后續(xù)修改配置可以調(diào)整這個文件。
這里默認路徑就不改了,今天首要目標(biāo)是先用起來!

3.啟動
查看進程管理模式:
ps --no-headers -o comm 1
應(yīng)該都是systemd吧?
啟動:
systemctl daemon-reload
systemctl start mongod
查看是否啟動:
systemctl status mongod
連接:
mongosh

檢查后臺進程,發(fā)現(xiàn)27017端口啟動了,它就是mongodb的服務(wù)端口:


image.png

連接后如圖:


image.png

已經(jīng)可以正常使用了。接下來插入一條數(shù)據(jù)試試:
按照官方給出的例子粘貼并執(zhí)行:
image.png

可以看到生成了一個ObjectID,這個很像mysql的主鍵,應(yīng)該是唯一的。帶著疑問進行一次查詢:


image.png

印證了猜想,也就是說,mongodb插入數(shù)據(jù)時,不需要指定主鍵,它會自動生成一個字段叫做_id,作為本條記錄的唯一標(biāo)識。

觀察了一下,發(fā)現(xiàn)mongodb的API都是函數(shù)的形式,類似 db.表.xx() 的形式??磥碛幸欢ǖ膶W(xué)習(xí)成本,但是在如今有GPT加持的時代,問題不大~

上面find函數(shù)中的item:"canvas" 應(yīng)該就是類似于where過濾條件,所以試試不加參數(shù):


image.png

依然能夠查到數(shù)據(jù),推理這個就是select * from inventory;

本次先到這里,最后感嘆一句,mongodb官方文檔整理的是真好,集成度很高,不用到處找這找那,這種有大公司保障的產(chǎn)品確實靠譜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容