日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MongoDB 關(guān)于MongoDB Shell的使用 (三)

 liang1234_ 2019-06-17

 
    在本文中,將介紹mongo shell的基本知識,以及如何使用它來管理MongoDB文檔。為了使讀者更容易地理解和實踐概念,MongoDB shell的引入被分成了三個部分。
  • 第一部分介紹了數(shù)據(jù)庫的基本特性,包括基本的CRUD操作符。

  • 第二部分介紹高級查詢。

  • 第三部分解釋存儲和檢索數(shù)據(jù)的兩種方式:嵌入和引用。


一、MongoDB Shell 的基本查詢

    本部分將簡要討論CRUD操作(創(chuàng)建、讀取、更新和刪除)。使用基本的示例和練習(xí),您將了解如何在MongoDB中執(zhí)行這些操作。同時,了解如何在MongoDB中執(zhí)行查詢。
    與用于查詢的傳統(tǒng)SQL不同,MongoDB使用它自己的類似于json的查詢從存儲的數(shù)據(jù)中檢索信息的語言。
    在成功安裝MongoDB之后,正如在第5章中所解釋的那樣,您將導(dǎo)航到目錄 [C:\practicalmongodb\bin\] 這個文件夾擁有運(yùn)行MongoDB的所有可執(zhí)行文件。
    MongoDB shell可以通過執(zhí)行mongo可執(zhí)行文件來啟動。
    第一步總是要啟動數(shù)據(jù)庫服務(wù)器。打開命令提示符(將其運(yùn)行為管理員)并發(fā)出命令CD。
    接下來,運(yùn)行命令C:實用的mongodb bin mongod.exe。(如果安裝在某些情況下其他文件夾,路徑會相應(yīng)地改變。對于本章中的例子,安裝在C:\practicalmongodb文件夾。)這將啟動數(shù)據(jù)庫服務(wù)器。




    默認(rèn)情況下,MongoDB會偵聽本地主機(jī)接口端口27017的任何傳入連接。
    現(xiàn)在數(shù)據(jù)庫服務(wù)器已經(jīng)啟動,可以使用下面的命令向服務(wù)器發(fā)出命令mongo shell。
    在您查看mongo shell之前,讓我們簡要了解一下如何使用導(dǎo)入/導(dǎo)出工具導(dǎo)入在MongoDB數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)。
    首先,創(chuàng)建一個CSV文件,以保存以下結(jié)構(gòu)的學(xué)生的記錄:名字,性別,階級,分?jǐn)?shù),年齡。



接下來,將MongoDB數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到一個新的集合中,以便查看導(dǎo)入工具。




簡而言之,你所做的是:

    1.連接到 Mongo Shell。

    2.切換到你要用的數(shù)據(jù)庫,例如admin。

    3.檢查在admin數(shù)據(jù)庫中存在的表,并show collections查看。

    4.核對你使用導(dǎo)入工具導(dǎo)入的表和數(shù)據(jù)。

    5.最后,之星find()命令來查看新表中的數(shù)據(jù)。


也可以使用help命令來查看相關(guān)指令。


在開始探索之前,讓我們先簡要介紹一下MongoDB術(shù)語和概念對應(yīng)于SQL術(shù)語和概念。表6-1總結(jié)了這一點(diǎn)。




    1.1 Create and Insert

現(xiàn)在,您將了解如何創(chuàng)建數(shù)據(jù)庫和集合。如前所述,這些文檔MongoDB是JSON格式的。
首先,通過發(fā)出db命令,您將確認(rèn)上下文是mydbpoc數(shù)據(jù)庫。

> db
mydbpoc

現(xiàn)在,您將看到如何創(chuàng)建文檔。
第一個文檔符合第一個原型而第二個文檔則符合第二個原型。
您已經(jīng)創(chuàng)建了兩個名為user1和user2的文檔。



接下來,您將按照以下順序?qū)⑦@兩個文檔(user1和user2)添加到用戶集合中的操作:

> db.users.insert(user1)
> db.users.insert(user2)

上面的操作不僅會將這兩個文檔插入到用戶的集合中,而且還會創(chuàng)建集合以及數(shù)據(jù)庫。
同樣可以使用show collection和show dbs進(jìn)行驗證命令。

如前所述,dbs將顯示數(shù)據(jù)庫的列表。



show collections 將在當(dāng)前數(shù)據(jù)庫中顯示集合的列表。



與集合用戶一起,系統(tǒng)。索引集合也會顯示出來。這個系統(tǒng)。索引收集是在創(chuàng)建數(shù)據(jù)庫時默認(rèn)創(chuàng)建的。它管理著所有的信息數(shù)據(jù)庫中所有集合的索引。
執(zhí)行命令db.users.find()將在用戶集合中顯示文檔。



您可以看到您創(chuàng)建的兩個文檔被顯示出來。除了你添加到的字段之外對于所有的文檔,都會生成一個額外的id字段。所有文檔必須具有惟一的id字段。
如果您沒有明確指定,那么將自動分配相同的值作為MongoDB的唯一對象ID,如上例所示。您沒有顯式地插入一個id字段,但是當(dāng)您使用find()命令來顯示文檔時
可以看到與每個文檔相關(guān)聯(lián)的id字段。這背后的原因是,默認(rèn)情況下,索引是在id字段上創(chuàng)建的,可以通過發(fā)出該字段來驗證在系統(tǒng)上找到命令。收集索引。


可以使用ensureIndex()和dropIndex()從集合中添加或刪除新索引命令。我們將在本章后面討論這個問題。默認(rèn)情況下,在所有id字段上創(chuàng)建一個索引集合。
這個默認(rèn)索引不能被刪除。

    1.2 Explicitly Creating Collections

    在上面的例子中,第一個插入操作隱式地創(chuàng)建了集合。但是,用戶也可以在執(zhí)行insert語句之前顯式地創(chuàng)建一個集合。

    1.3 Inserting Documents Using Loop

還可以使用for循環(huán)將文檔添加到集合中。下面的代碼將插入用戶使用的代碼。



為了驗證插入是否成功,可以在集合上運(yùn)行find命令。



用戶出現(xiàn)在集合中。在您進(jìn)一步了解之前,讓我們先了解一下它的“類型”聲明。find命令將一個光標(biāo)返回到結(jié)果集,而不是顯示所有的文檔(可以是成千上萬的結(jié)果)在一個屏幕上,光標(biāo)顯示了前20個文檔并等待請求迭代(it)顯示下一個20,直到所有結(jié)果集都顯示出來。所產(chǎn)生的光標(biāo)也可以被分配給一個變量,然后通過編程方式對其進(jìn)行迭代使用while循環(huán)。光標(biāo)對象也可以作為數(shù)組進(jìn)行操作。在您的例子中,如果您輸入“it”并按Enter鍵,下面將顯示以下內(nèi)容:



因為只剩下兩個文檔,所以它顯示剩下的兩個文檔。





    1.4 Inserting by Explicitly Specifying _id

在前面的插入示例中,沒有指定id字段,因此它是隱式添加的。在接下來的例如,您將看到如何在一個集合中插入文檔時顯式地指定id字段。在顯式地指定id字段時,您必須記住字段的惟一性;否則插入就會失敗。



    1.5 Update

在本節(jié)中,您將探索update()命令,該命令用于更新集合中的文檔。update()方法在默認(rèn)情況下更新一個文檔。如果你需要更新所有的文檔匹配選擇條件,您可以通過將多個選項設(shè)置為true來實現(xiàn)。讓我們從更新現(xiàn)有列的值開始。$set操作符將用于更新的記錄。下面的命令更新了所有女性用戶的英國:




要檢查更新是否已經(jīng)發(fā)生,請發(fā)出一個find命令來檢查所有的女性用戶。



如果檢查輸出,就會看到只有第一個文檔記錄被更新,這是默認(rèn)值由于沒有指定多個選項,所以更新的行為。
現(xiàn)在,讓我們更改update命令,并包含多選項:




再次發(fā)出find命令來檢查這個國家是否已經(jīng)為所有女性更新過員工或不是。發(fā)出find命令將返回以下輸出:




正如您所看到的,這個國家被更新到英國,以滿足所有符合條件的記錄。
在實際應(yīng)用程序中工作時,您可能會遇到可能出現(xiàn)的模式演化最后從文檔中添加或刪除字段。我們來看看如何在這個過程中進(jìn)行這些修改MongoDB數(shù)據(jù)庫。
update() 操作可以在文檔級別使用,這有助于更新單個文件在一個集合中文檔或一組文檔。
接下來,讓我們看看如何向文檔中添加新字段。為了向文檔中添加字段,使用使用$set操作符和多選項的update()命令。
如果使用$set的字段名,這是不存在的,那么該字段將被添加到文檔中。下面的命令將把字段公司添加到所有文檔:



對用戶的集合發(fā)出find命令,您將發(fā)現(xiàn)添加到所有文檔的新字段



如果您使用文檔中已有的字段執(zhí)行update()命令,它將更新該字段價值;但是,如果該字段沒有出現(xiàn)在文檔中,那么該字段將被添加到文檔中。
接下來,您將看到如何使用$unset操作符使用相同的update()命令來刪除字段從文檔。
以下命令將從所有文檔中刪除字段公司:



可以通過向用戶集合發(fā)出find()命令來檢查這一點(diǎn)。你可以看到公司字段已從文件中刪除。




    1.6 Delete

要刪除集合中的文檔,請使用remove()方法。如果你指定了一個選擇條件符合標(biāo)準(zhǔn)的文件將被刪除。如果沒有指定任何標(biāo)準(zhǔn),那么所有的文檔將被刪除。

下面的命令將刪除性別='M':



可以通過向用戶發(fā)出find()命令來驗證這一點(diǎn):



沒有返回的文檔。
以下命令將刪除所有文檔:




如您所見,沒有返回任何文檔。
最后,如果您想要刪除集合,下面的命令將刪除集合:



為了驗證是否刪除了集合,發(fā)出show集合命令。



正如您所看到的,集合名稱沒有顯示,確認(rèn)已經(jīng)刪除了集合從數(shù)據(jù)庫中。在介紹了基本的創(chuàng)建、更新和刪除操作之后,下一節(jié)將向您展示如何執(zhí)行讀操作。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多