對于關系型數據庫,我們知道,數據庫中有多個表,數據表里有多行數據。而對于mongodb來說,則是數據庫里有多個集合,集合里由多個文檔。
數據庫
mongodb的數據庫概念和mysql的差不多,每個數據庫都可以設置獨立的權限。
首先,我們來看如何創建數據庫,MongoDB對于數據庫名稱也是有限制的,只能使用數字或字母,另外數據庫名稱是區分大小寫的,一般的,我們都會使用小寫的。另外,有一些關鍵字也是不可以使用的,如:admin、config、local等。
在MongoDB中,不需要顯示的創建數據庫,只需要選擇use dbName即可,當數據庫不存在的時候,會自動為我們創建。
>?use?huoying switched?to?db?huoying
當使用db命令時,會顯示當前使用的數據庫名。
>?db huoying
查看當前所有數據庫,使用show dbs;
>?show?dbs; admin????0.000GB config???0.000GB huoying??0.000GB local????0.000GB
集合
MongoDB的集合類似于Mysql中的表,集合是有多個文檔組成的。但集合不像表那樣有字段的限制,集合下面的文檔可以是各種各樣。比如,一個集合下面可能有下面兩種文檔:
{"name":"gwx",?"age"?:?30}, {"id":1,?"score":100}
雖然,集合對文檔是沒有限制的,但是為了數據管理的方便,我們一般都將相關文檔放在一個集合里。
創建集合,分為直接創建和隱式創建。
#?顯示的創建集合 >?db.createCollection('huoying') {?"ok"?:?1?}
隱式創建集合,直接創建文檔時,若集合不存在,會先創建集合
文檔
最后,我們來看看文檔。文檔的數據類型類似于php中的關聯數據、或JavaScript中的對象。
注意,文檔是區分大小寫以及數據類型的。看下面例子:
#?下面兩個是不一樣的文檔,他們的數據類型不一樣 {"name":30} {"name":"30"} #?下面兩個是不一樣的文檔,鍵名不一樣 {"name":30} {"NAME":30}
新增文檔
使用命令db.集合名.insertOne(文檔數據),可以向指定集合插入一篇文檔。若該集合不存在時,則會隱式創建該集合。
>?db.users.insertOne({"name":"gwx",?"age":29}) { ?"acknowledged"?:?true, ?"insertedId"?:?ObjectId("5f0cfdbb7688816db4d031bc") } >?db.users.find() {?"_id"?:?ObjectId("5f0cfdbb7688816db4d031bc"),?"name"?:?"gwx",?"age"?:?29?} >
修改文檔
使用update來更新文檔內容,update需要兩個參數,第一個是限定條件,用來查找指定的文檔,第二個是新文檔的內容。
>?db.users.update({name:"gwx"},?{name:"monkeyking",?age:500}) WriteResult({?"nMatched"?:?1,?"nUpserted"?:?0,?"nModified"?:?1?}) >?db.users.find() {?"_id"?:?ObjectId("5f0cfdbb7688816db4d031bc"),?"name"?:?"monkeyking",?"age"?:?500?}
刪除文檔
使用remove來刪除文檔
>?db.users.remove({age:500}) WriteResult({?"nRemoved"?:?1?})