日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB——Shell的基本操作及使用窍门

發布時間:2025/1/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB——Shell的基本操作及使用窍门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MongoDB自帶一個JavaScript shell,可以從命令行與MongoDB實例交互。這個 shell非常有用,通過它可以執行管理操作、檢査運行實例,亦或做其他嘗試。這個 mongo shell對于使用MongoDB來說是至關重要的工具,本書后面也會經常使用這 個工具。

  • 運行shell

運行mongo啟動shell:

$ ./mongo MongoDB shell version: 1.6.0 url: test connecting to: test type "help" for help

shell會在啟動時自動連接MongoDB服務器,所以要確保在使用shell之前啟動mongodo shell是功能完備的JavaScript解釋器,可以運行任何JavaScript程序。為了證明這 一點,我們運行幾個簡單的數學運算:

>x = 200 200 >x / 5; 40

還可以充分利用JavaScript的標準庫。

>Math.sin(Math.PI / 2); 1 >new Date(''2010/l/l"); "Fri Jan 01 2010 00:00:00 GMT-0500 (EST)? >"Hello, World! " . replace ("World, "MongoDB"); Hello, MongoDB!

也可以定義和調用JavaScript函數:

>function factorial (n) { ...if (n <= 1) return 1; ... return n * factorial(n - 1); ---} >factorial(5); 120

注意,可以使用多行命令。這個shell會檢測輸入的JavaScript語句是否寫完,如沒 寫完還可以在下一行接著寫。

  • MongoDB 客戶端

雖然能運行任意JavaScript程序很酷,但shell的真正威力還在于它是一個獨立的Mongo- DB客戶端。開啟的時候,shell會連到MongoDB服務器的test數據庫,并將這個數據 庫連接賦值給全局變量dbo這個變量是通過sheU訪問MongoDB的主要入口點。
shell還有些非JavaScript語法的擴展,是為了方便習慣于SQL shell的用戶而添加 的。這些擴展并不提供額外的功能,但它們是很棒的語法糖。例如,最重要的操作 之一就是選擇要使用的數據庫:

>use foobar switched to db foobar

現在如果看看db,會發現其指向foobar數據庫:

>db foobar

因為這是一個JavaScript shell,所以鍵入一個變量會將變量的值轉換為字符串(這 里就是數據庫名)并打印出來。
可以通過db變量來訪問其中的集合。例如db.baz返回當前數據庫的baz集合。既然 現在可以在shell中訪問集合,那么基本上就可以執行幾乎所有的數據庫操作了。

  • shell中的基本操作

在shell査看操作數據會用到4個基本操作:創建、讀取、更新和刪除(CRUD)。

  • 1.創建

insert函數添加一個文檔到集合里面。例如,假設要存儲一篇博客文章。首先, 創建一個局部變量post,內容是代表文檔的JavaScript對象。里面會有"title", “content"和"date”(發表日期)幾個鍵。

>post = ( nti11 e11 : "My Blog Post11, ..."content" : "Here's my blog post.", ...ndate11 : new Date () } ( "title" : "My Blog Post", "content" : "Here * s my blog post.H, "date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)" }

這個對象是個有效的MongoDB文檔,所以可以用insert方法將其保存到blog集 合中:

>db ..blog. insert (post)

這篇文章已經被存到數據庫里面了。可以調用集合的find方法來査看一下:

>db.blog.find() ( : Objectld(,,4b2 3c3ca752 5f35f94b6 0a2d"), : "My Blog Post", "content" : "Here 1s my blog post.", "date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)" }

除了我們輸入的鍵/值對都完整地被保存下來,還有一個額外添加的鍵?_id"o本 章的最后會解釋"_id"突然出現的原因。

  • 2.讀取

find會返回集合里面所有的文檔。若只是想査看一個文檔,可以用findOne:

>db.blog.findOne() {"_id" : Objectld( ''4b2 3c3ca7525f3 5f94b60a2d?),"title11 : "My Blog Post","content” : "Here's my blog post.","date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)" }

find和f indOne可以接受査詢文檔形式的限定條件。這將通過査詢限制匹配的文 檔。使用find時,shell自動顯示最多20個匹配的文檔,但可以獲取更多文檔。

  • 3.更新

如果要更改博客文章,就要用到update To update接受(至少)兩個參數:第一 個是要更新文檔的限定條件,第二個是新的文檔。假設決定給我們先前寫的文章增 加評論內容,則需要增加一個新的鍵,對應的值是存放評論的數組。
第一步修改變量post,增加"comments"鍵:

>post.comments = [] []

然后執行update操作,用新版本的文檔替換標題為aMy Blog Post"的文章:

>db.blog.update((title : "My Blog Post"}, post)

文檔已經有了”comments”鍵。再用find査看一下,可以看到新的鍵:

>db.blog.find() {"_id": ObjectId(M4b23c3ca7525f35f94b60a2dn),"title" : "My Blog Post"t"content" : MHere's my blog post.","date" : "Sat Dec 12 2009 11:23:21 GMT-0500 (EST)","comments":[] }
  • 4.刪除

remove用來從數據庫中永久性地刪除文檔。在不使用參數進行調用的情況下,它 會刪除一個集合內的所有文檔。它也可以接受一個文檔以指定限定條件。例如,下 面的命令會刪除我們剛剛創建的文章:

>db.blog.remove((title : "My Blog Post"})

集合現在又是空的了。

  • 使用shell的竅門

由于mongo是個JavaScript shell,通過在線査看JavaScript的文檔能獲得很多幫助。 shell本身內置了幫助文檔,可以通過help命令査看。

>help HELP show dbs show database names show collections in current database show users in current database show recent system.profile entries w. time >= Iras set current database to <db name> help on DB methods help on collection methods . list objects in collection foo list objects in foo where a == 1 result of the last line evaluated

使用db.help ()可以査看數據庫級別的命令的幫助,集合的相關幫助可以通過db. foo. help ()來査看。
有個了解函數功用的技巧,就是在輸入的時候不要輸括號。這樣就會顯示該函數的 JavaScript源代碼。例如,如果想看看update的機理,或者就是為了看看參數順 序,可以這么做:

> db.foo.update function (query, obj, upsert, multi) {assert(query, Mneed a query");assert(obj, Hneed an obj ect"); this._validateObject(obj); this._mongo.update(this._fullName, query, obj, upsert ? true : false, multi ? true : false); }

要査看shell提供的所有自動生成的JavaScript函數API文檔,可訪問http://api.mon- godb.org/jso
蹩腳的集合名
使用db.集合名的方式來訪問集合一般不會有問題,但如果集合名恰好是數據庫類 的一個屬性就有問題了。例如,要訪問version這個集合,使用db. vers ion就 不行,因為db.version是個數據庫函數(它返回正在運行的MongoDB服務器的 版本)。

>db.version function (){return this.serverBuildlnfo().version; }

當JavaScript只有在db中找不到指定的屬性時,才會將其作為集合返回。當有屬性 與目標集合同名時,可以使用getCollection函數:

>db.getCollection("version"); test.version

要査看名稱中含有無效JavaScript字符的集合,這個函數也可以派上用場。比如£。。-
bar是個有效的集合名,但是在JavaScript中就變成了變量相減了。通過db.get- Collection ( " f oo-bax")可以得到 f oo-bax 集合。
在JavaScript中,x.y與x[‘y’]完全等價。這就意味著不但可以直“呼”其名,也可 以使用變量來訪問子集合。也就是說,當需要對blog的每個子集合執行操作時,只需 要像下面這樣迭代就好了:

var collections = ["posts" z "comments**, "authors"]for (i in collections) ( doStuff(db.blog [collections[i]]); }

而不是使用下面這種笨笨的寫法:

doStuff(db.blog.posts); doStuff(db.blog.comments); doStuff(db.blog.authors);

總結

以上是生活随笔為你收集整理的MongoDB——Shell的基本操作及使用窍门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。