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