MongoDB學習筆記—02 MongoDB入門

來源:互聯網
上載者:User

標籤:style   blog   os   使用   sp   java   strong   on   檔案   

Mongodb的基本概念

文檔:是MongoDB中資料的基本單元,類似於關係型資料庫中的行。

集合:多個文檔組成一個集合,類似於關係型資料庫中的表。

資料庫:MongoDB的當個執行個體可以容納多個獨立的資料庫,每個資料庫有自己的集合和許可權。

鍵:每個文檔都有一個特殊的鍵”_id”,在所處的集合中是唯一的。

  • 文檔

多個索引值對有序的放在一起便是文檔,如:

{ "name":"wangdh","age":"22"}

上面的文檔包含兩個鍵name和age,其值分別是wangdh和22.

說明:

1)文檔的索引值對是有序的,也就是說,下面的文檔與上面的文檔是兩個不同的文檔:

{"age":"22","name":"wangdh"}

2)文檔的鍵是字串。

3)MongoDB不但區分類型,還區分大小寫。即下面的兩個文檔是不同的:

{"age":"22","Age":22}

{"age":22," Age ":"22"}

4)同一個文檔不能有相同的鍵,如下面的文檔是不合法的:

{"age":"22","age":22}

  • 集合

集合是一組文檔,相當於關係型資料庫的表。

1)集合的無模式性

無模式的意思是:一個集合中的文檔可以各式各樣,文檔的索引值對數、索引值對順序可以不一樣。例如下面的文檔可以存在於一個集合中:{"age":"22","Age":22}、{"name":"wangdh"}

但通過情況下,為了方便使用,一個集合往往只存放模式一致的文檔。

2)子集合:通過“.”字元分開的按命名空間劃分的子集合,如一個帶有部落格功能的應用可能包含兩個集合:bolg.posts、blog.authors

  • 資料庫

多個文檔組成集合,多個集合組成資料庫。一個MongoDB執行個體可以承載對個資料庫,每個資料庫都有獨立的許可權控制。

注意:資料庫名最終會變成檔案系統裡的檔案。

1)內建資料庫

admin:從許可權角度看,相當於root資料庫,要是將一個使用者添加到此資料庫,這個使用者自動繼承所有資料庫的許可權。

local:這個資料永遠不會被複製,可以用來儲存限於本地單台伺服器的任意集合。

config:當Mongo用於分區設定時,該資料庫儲存分區的相關資訊。

2)命名空間

將資料庫的名字放在集合面前,得到的就是集合的完全限定名,成為命名空間。例如:在test資料庫中有一個blog.posts集合,則該集合的命名空間就是:test.blog.posts.命名空間的長度不得超過121位元組。

  • ”_id”鍵

MongoDB中儲存的文檔必須有一個”_id”鍵,可以是任意類型,預設是ObjectId對象。在一個集合中,每個文檔都有唯一的”_id”鍵,來確保其唯一性。

1)ObjectId

使用12位元組的儲存空間,每個位元組兩位十六進位數,是一個24位的字串。前4個位元組是時間戳記,精確到秒,接下來3個位元組是所在主機的唯一標示符(通過是主機名稱的散列值),接下來2個位元組是產生該ObjectId的進程標示符(PID)、最後3個位元組是一個自動成長的計數器。

前9個位元組保證了同一秒鐘不同機器產生的ObjectId是唯一的,後3個位元組確保相同進程同一秒產生的ObjectId是不一樣的。

 

MongoDB Shell

 

MongoDB內建一個JavaScript shell,可以通過命令列與MongoDB執行個體互動。

 

  • 運行shell

 

windows平台下,通過在命令列運行bin目錄下的mongo.exe檔案,即可啟動shell;Linux下通過運行mongo檔案啟動shell。shell會在啟動時自動連接MongoDB伺服器,所以要確保在使用shell之前啟動mongod。

 

  • MongoDB用戶端

 

shell是一個獨立的? MongoDB用戶端,開啟時,shell會連到MongoDB伺服器的test資料庫,並把這個資料庫連接賦值給全域變數db。可以通過use命令來轉換資料庫:use wangdh(如果該資料庫不存在則會建立)。

 

  • shell中的基本操作

 

一般資料庫的基本操作都是:建立、讀取、更新、刪除(CRUD).

 

1)建立 insert

 

insert函數添加一個文檔到集合中。例如:先通過局部變數t1儲存要插入的文檔,然後通過全域變數db.集合名.insert(t1)將文檔t1插入到指定集合中(集合不存在時會自動建立)。

 

>t1={"name":"wangdh","age":22}

 

>db.user.insert(t1)

 

2)讀取 find

 

find函數返回集合中的所有文檔,findOne函數返回一個文檔。

 

例如:db.user.find()會將剛才插入的文檔讀取出來。

 

兩個函數都可以接受查詢文檔形式的行動條件,使用find時,shell自動顯示最大20個匹配的文檔

 

3)更新 update

 

update函數接受至少兩個參數:第一個是要更新的限定條件,第二個是新的文檔。如:

 

>newName={"name":"newName"}

 

>db.user.update({"name":"wangdh"}, newName)

 

4)刪除 remove

 

remove函數從資料庫中永久性的刪除文檔,在不適用參數指定限定的情況下,會刪除一個集合內的所有文檔,例如:db.user.remove()

 

MongoDB學習筆記—02 MongoDB入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.