MongoDB Shell工具:mongosh的使用
jcLee 的 CSDN 博客
郵箱 :291148484@163.com
CSDN 主頁:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343
本文地址:https://blog.csdn.net/qq_28550263/article/details/119892582
目 錄
1. 使用前的準(zhǔn)備
- 安裝 mongosh
- 啟動(dòng) MongoDB
2. 使用mongosh連接實(shí)例
3. 創(chuàng)建、讀取、更新和刪除(CURD)操作
-
3.1 數(shù)據(jù)庫的創(chuàng)建
- 3.1.1 選擇和創(chuàng)建數(shù)據(jù)庫
-
3.2 數(shù)據(jù)庫的刪除
-
3.3 集合操作
- 3.3.1 集合的創(chuàng)建
- 3.3.2 查看所有集合
- 3.3.3 集合的刪除
-
3.4 文檔操作
-
3.4.1 文檔的插入
-
3.4.2 從集合中刪除文檔
-
3.4.3 修改集合中的文檔
1. 使用前的準(zhǔn)備
1.1 安裝 mongosh
MongoDB的Shell工具mongosh是一個(gè)全功能的JavaScript和Node.js的14.x REPL與MongoDB的部署交互環(huán)境。我們通過它可以直接對(duì)數(shù)據(jù)庫進(jìn)行查詢和操作。這個(gè)工具是需要在安裝玩MongoDB后單獨(dú)安裝的,Windows平臺(tái)對(duì)應(yīng)的mongosh的下載地址為:
- https://downloads.mongodb.com/compass/mongosh-1.0.5-x64.msi
當(dāng)然你也可以自己在MongoDB下載頁面尋找對(duì)應(yīng)的版本進(jìn)行下載:
- https://www.mongodb.com/try/download/shell?jmp=docs
- https://docs.mongodb.com/mongodb-shell/install/#std-label-mdb-shell-install
下載完成后,進(jìn)行安裝,基本只要點(diǎn)擊下一步即可:
1.2 啟動(dòng) MongoDB
因?yàn)橹笪覀兪褂胢ongosh來連接MongoDB實(shí)例,因此先要對(duì) MongoDB進(jìn)行啟動(dòng)。啟動(dòng)主要有兩種方式。
(1)在bin目錄中直接使用如下命令啟動(dòng):
找到你的安裝目錄下的bin目錄,如果你還沒有將該目錄添加到Path環(huán)境變量下,那么你需要通過命令行進(jìn)入到該目錄后才能執(zhí)行相關(guān)命令。
命令如下:
注意中間不要有空格。右面--dbpath選項(xiàng)所指定的就是你的數(shù)據(jù)庫存放目錄。
(2)通過配置文件進(jìn)行啟動(dòng):
有兩種寫法,一種是 -f選項(xiàng)加路徑,如
另外一種寫法是 --config選項(xiàng)加路徑,如
mongod --config ../config/mongod.conf配置文件的格式如:
systemLog:destination: file#The path of the log to which mongod or mongos should send all diagnostic logging informationpath: "D:/Program Files/MongoDB/Server/5.0/log/mongo.log"logAppend: true storage:journal:enabled: true# the directory where the mongod instance stores its data.Default Value is "/data/db".dbPath: D:\Program Files\MongoDB\Server\5.0\data net:bindIp: 127.0.0.12. 使用mongosh連接實(shí)例
一般的鏈接命令格式為:
mongosh "mongodb://hostname:port"本地 MongoDB 實(shí)例使用 默認(rèn)端口 27017 ,在mongosh沒有任何命令行選項(xiàng)的情況下可以直接簡寫為一下命令進(jìn)行連接:
mongosh這相當(dāng)于使用命令:mongosh "mongodb://localhost:27017"
一下時(shí)一次連接到本地實(shí)例的截圖:
3. 創(chuàng)建、讀取、更新和刪除(CURD)操作
3.1 數(shù)據(jù)庫的創(chuàng)建
創(chuàng)建或插入操作將新文檔添加到集合中。如果該集合不存在,則創(chuàng)建操作也會(huì)創(chuàng)建該集合。可以在一次操作中插入單個(gè)文檔或多個(gè)文檔。
mongo3.1.1 選擇和創(chuàng)建數(shù)據(jù)庫
use 數(shù)據(jù)庫名注意:使用該命令的時(shí)候,如果有數(shù)據(jù)庫名稱指定的數(shù)據(jù)庫則會(huì)使用該數(shù)據(jù)庫,否則將自動(dòng)創(chuàng)建名稱為所指定名稱的數(shù)據(jù)庫。
數(shù)據(jù)庫名需要滿足一定的規(guī)則:
- 它可以是任意滿足UTF-8編碼的字符串;
- 不允許是空字符串;
- 不允許含有’ '(空格)、.(點(diǎn))、$、/、\、和\0(空字符串);
- 應(yīng)采用全小寫字符,并且布草過64字節(jié);
- 不能使用一些暴力與的數(shù)據(jù)庫名:
- admin: 這個(gè)相當(dāng)于具有root權(quán)限的數(shù)據(jù)庫,要是將一個(gè)用戶添加到該數(shù)據(jù)庫,則用戶將自動(dòng)地繼承所有數(shù)據(jù)庫的權(quán)限。某些特定的服務(wù)器端命令也只能從這個(gè)數(shù)據(jù)庫運(yùn)行,比如列出所有的數(shù)據(jù)庫或者關(guān)閉服務(wù)器等等;
- local: 該數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可以用來存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合;
- config: 當(dāng)Mongo用于分片設(shè)置時(shí),config數(shù)據(jù)庫再內(nèi)部使用,用于保存分片的相關(guān)信息。
也可以查看當(dāng)前所使用的數(shù)據(jù)庫:
db查看所有的數(shù)據(jù)庫:
show dbs(或者show databases)
執(zhí)行效果如圖:
在這個(gè)截圖中看到,并沒有顯示出我們使用use命令所創(chuàng)建的數(shù)據(jù)庫“mydb”,是因?yàn)槲覀冞€沒有把它存儲(chǔ)在硬盤中,但這個(gè)新的數(shù)據(jù)庫已經(jīng)可以在內(nèi)存中建立了。
其中MondoDB中所默認(rèn)的數(shù)據(jù)庫名為test,也就是說如果你沒有指定過其他名稱的數(shù)據(jù)庫,所使用的集合將全部存放在名為test的默認(rèn)數(shù)據(jù)庫中。
在創(chuàng)建數(shù)據(jù)庫后集合不會(huì)馬上創(chuàng)建,只有在插入了內(nèi)容后才會(huì)創(chuàng)建集合。這里的集合就相當(dāng)于MySQL等數(shù)據(jù)庫中的數(shù)據(jù)表。也就是說創(chuàng)建集合后要再插入一個(gè)文檔(相當(dāng)于MySQL中的記錄),集合才會(huì)創(chuàng)建。
3.2 數(shù)據(jù)庫的刪除
刪除操作從集合中刪除現(xiàn)有文檔。您可以在一次操作中刪除單個(gè)文檔或多個(gè)文檔。可以指定用于標(biāo)識(shí)要?jiǎng)h除的文檔的條件或過濾器。這些過濾器使用與讀取操作相同的語法。
MongoDB刪除數(shù)據(jù)庫shell的格式為:
這里的Shell命令與JavaScript中的函數(shù)類似,以該刪除函數(shù)為例,db是我們所use的一個(gè)數(shù)據(jù)庫對(duì)象,執(zhí)行的是該對(duì)象的dropDatabase()函數(shù)(方法)。不過需要注意,mongosh方法終究不是Node.js或者某一其他編程語言中的方法或函數(shù)。現(xiàn)在我們可以測試刪除剛剛所創(chuàng)建的數(shù)據(jù)庫:
這個(gè)也只是對(duì)硬盤中的數(shù)據(jù)庫的操作,實(shí)際上現(xiàn)在我們所“use”的還是mydb。
3.3 集合操作
3.3.1 集合的創(chuàng)建
這里的集合就相當(dāng)于MySQL等關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)表,集合是“文檔”的容器,而文檔則相當(dāng)于MySQL等關(guān)系型數(shù)據(jù)庫中的“記錄”,也就是所存儲(chǔ)的一條數(shù)據(jù)。為當(dāng)前所使用的數(shù)據(jù)庫“db”顯示創(chuàng)建一個(gè)集合的格式如下:
db.createCollection(name)- name 該參數(shù)是要為當(dāng)前所使用的數(shù)據(jù)庫db創(chuàng)建的集合的名稱,需要使用引號(hào)表示名稱的字符串,如:db.createCollection("mydb")
實(shí)際上“集合”還可以被隱式地創(chuàng)建。當(dāng)向一個(gè)集合中插入一個(gè)文檔時(shí),若被插入文檔的集合不存在,則將自動(dòng)創(chuàng)建該集合。
3.3.2 查看所有集合
其命令如下:
show collections如圖:
3.3.3 集合的刪除
刪除集合的格式為:
db.collection.drop()或者
db.集合名.drop()3.4 文檔操作
3.4.1 文檔的插入
(1)插入單個(gè)文檔
db.collection.insertOne()例如:
db.students.insertOne( { name: "小明", age: 16 } );以下是shell執(zhí)行的截圖:
可以看到mongosh返回了一段腳本執(zhí)行的信息,即:
說明我們執(zhí)行成功了。使用可視化工具也可以查看到在當(dāng)前使用的名為test數(shù)據(jù)庫下,名為student的集合下添加了一個(gè)文檔:
(2)插入多個(gè)文檔
我們也可以一次性插入多個(gè)文檔:
db.collection.insertMany() ```例如: ```jsdb.techers.insertMany( [ { name: "JackMa", age: 57 }, { name: "Michael Yu", age: 59 } ] );3.4.2 從集合中刪除文檔
MongoDB中的刪除操作有兩種,一個(gè)是db.collection.deleteOne(),用于從集合中刪除單個(gè)文檔;另一個(gè)是db.collection.deleteMany(),用于按照某種規(guī)則刪除多個(gè)文檔。他們都是針對(duì)單個(gè)集合的刪除
(1)db.collection.deleteOne()
格式為:
db.collection.deleteOne(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string> // Available starting in MongoDB 4.4} )其中:
-
filter :過濾器,用于指定刪除條件。相當(dāng)于SQL中使用where語句。db.collection.deleteOne()方法將 刪除與過濾器匹配的第一個(gè)文檔。如果需要精確刪除某一條文檔,應(yīng)該使用屬于唯一索引一部分的字段,比如_id。
-
writeConcern(可選):它關(guān)注描述了從 MongoDB 請求對(duì)獨(dú)立mongod或副本集或分片集群的寫入操作的確認(rèn)級(jí)別。
-
collation(可選):它指定了用于操作的排序規(guī)則。排序規(guī)則允許用戶 為字符串比較指定特定于語言的規(guī)則,例如字母和重音符號(hào)的規(guī)則。
-
hint(可選):hint指定用于支持查詢謂詞的 索引 的文檔或字符串。該選項(xiàng)可以采用索引規(guī)范文檔或索引名稱字符串。如果指定的索引不存在,則操作會(huì)出錯(cuò)。
索引 是一種特殊的數(shù)據(jù)結(jié)構(gòu),它以易于遍歷的形式存儲(chǔ)集合數(shù)據(jù)集的一小部分,用于支持在 MongoDB 中高效執(zhí)行查詢。
- 如果沒有索引則MongoDB 必須執(zhí)行集合掃描,即掃描集合中的每個(gè)文檔,以選擇那些與查詢語句匹配的文檔。
- 如果查詢存在合適的索引,MongoDB 可以使用該索引來限制它必須檢查的文檔數(shù)量。
(MongoDB 索引使用 B 樹數(shù)據(jù)結(jié)構(gòu))
建立索引:
db.students.createIndex( { chinaese: 1, _id: -1 } ) {"numIndexesBefore" : 1,"numIndexesAfter" : 2,"createdCollectionAutomatically" : false,"ok" : 1 }刪除操作使用一個(gè)索引:
(2)db.collection.deleteMany()
3.4.3 修改集合中的文檔
暫無內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的MongoDB Shell工具:mongosh的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何:创建公钥/私钥对
- 下一篇: InnerClass内部类