打開 MongoDB Shell
mongo
數據庫基本操作
查看當前指向的數據庫
shell 會連到 MongoDB 服務器的默認數據庫 test,並將這個數據庫連接賦值給全局變量 db。
這個變量是通過 shell 訪問 MongoDB 的主要入口點。
db
創建數據庫
使用 use 命令創建數據庫,如果數據庫不存在,則創建數據庫,否則切換到指定數據庫。
use demodb1
現在,如果查看 db 變量,會發現其正指向 demodb1 數據庫:
創建集合
通過 db 變量的 createCollection 方法,可以創建新的集合。
命令格式:db.createCollection(name, options)
例如,在 demodb1 數據庫下創建 myCollection1 和 myCollection2 兩個集合,可以執行以下
命令:
db.createCollection("myCollection1")
db.createCollection("myCollection2")
對集合重命名
通過 db 變量,可以訪問其中的集合。例如,通過 db.myCollection1 可以返回當前數據庫的
myCollection1 集合。
使用 renameCollection 方法,可以對已有集合進行重新命名。
db.myCollection1. renameCollection("blob")
查看集合列表
使用 show collections 命令查看數據庫中所有集合的列表。
show collections
刪除指定的集合
使用 drop 方法可以刪除指定的集合。
db.myCollection2.drop()
添加文檔
使用 insert 方法可以將一個文檔添加到集合中。下面以存儲一篇博客文章為例進行操作。
首先,創建一個名為 post 的局部變量。這是一個 JavaScript 對象,用於表示對應該博客文章的一個文檔。它包含3個鍵:“title”(標題)、“content”(正文)、“date”(發佈日期)。
查看文檔
使用find方法可以查詢集合裏的全部文檔。使用find時,shell會自動顯示最多20個匹配的文檔。
db.blog.find()
db.blog.findOne()
更新文檔
使用 update 可以更新已有的文檔。update接收(至少)兩個參數:第一個是限定條件(用於匹配待更新的文檔),第二個是新的文檔。
假設要為之前寫的文章增加評論功能,就需要增加一個新的鍵(字段),用於保存評論數組。
首先,修改變量 post,增加"comments“鍵:
post.comments = []
然後執行 update操作,用新版本的 post 文檔替換標題為"My First Blog"的文章:
db.blog.update({title:"My First Blog"},post)
現在,文檔已經有了"comments "鍵。再用findOne查看一下,可以看到新的鍵:
db.blog.findOne()
刪除文檔
使用 remove 方法可將文檔從數據庫中永久刪除。如果沒有使用任何參數,它會將集合內的所有文檔全部刪除。它可以接受一個作為限定條件的文檔作為參數。例如,下面的命令會刪除剛剛創建的那篇文章。
db.blog.remove({title:"My First Blog"})
再次執行查詢後可以發現集合變為空值null。
db.blog.findOne()
查看所有數據庫
使用 showdbs 命令可以列表顯示出所有數據庫。
show dbs
注意,新創建的數據庫 demodb1 只有在插入數據後,才會顯示在數據庫列表中。
刪除數據庫
使用 dropDatabase 方法可以刪除當前數據庫。
db.dropDatabase()
Shell 連接指定的 MongoDB 實例
-
連接任意的MongoDB實例
執行下列命令,# mongo localhost:27017/demodb1 # db則 db 現在就指向了localhost:27017上的 demodb1數據庫。
-
在啓動 mongo shell 時,不連接到任何mongod實例有時可能會更加靈活方便。
# mongo --nodb啓動之後,在需要時運行 new Mongo(hostname) 命令就可以連接到指定的 mongod 實例了。
> new Mongo("localhost:27017") > conn=new Mongo("localhost:27017") > db = conn.getDB("demodb1")
Shell 中使用幫助
- help
查找 mongodb 特有功能 - db.help()
查看數據級別幫助 - db.blog.help()
查看集合級別幫助 - db.blog.update
如果希望知道一個函數的功能及其詳細信息,可以在shell中輸入函數名(不要在後面輸入括號),這樣就可以看到相應函數的JavaScript 實現代碼。
例如,想知道 update 函數的工作原理,或者記不清參數的順序,就可以如下面這樣去做。
附錄
shell 中的多行操作:
如果你的代碼行以左括號 ('('),左大括號 ('{')或左中括號 ('[') 結束,那麼隨後的一行將以省略號 ("...") 開始,直到你輸入對應的右括號 (')'),右大括號 ('}')或右中括號 (']') 。 mongoshell在執行代碼以前將一直等待右括號,右大括號或右中括號,如下例所示:
if ( x > 0 ) {
... count++;
... print (x);
... }
也可以通過按下兩次回車鍵來結束這次輸入:
> if (x > 0
...
...
>