MongoDb的基本操做快速入門

1.MongoDb簡介mysql

   mongodb是一個基於分佈式存儲的開源數據庫系統又被稱爲文檔數據庫,能夠將數據存儲爲一個文檔,數據結構有鍵值對(key=>value)對組成,存儲的文檔相似於JSON對象(BSON->JSON的二進制化)。linux

   特色:內部執行引擎爲JS解釋器,把文檔存儲成BSON結構,在查詢時,轉換爲JS對象,並能夠經過熟悉的JS語法來操做。sql

   mongodb和傳統數據庫簡單比較,最大的不一樣:mongodb

    傳統型數據庫:結構化數據,定好了表結構後,每一行的內容,一定是符合表結構的,就是說列的個數以及類型都同樣。數據庫

   文檔數據庫:表下的每篇文檔均可以有本身獨特的結構或者屬性和值。json

2.MongoDb的安裝(centos7下詳細安裝步驟)centos

1)首先下載mongodb安裝包:數組

#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.4.tgz

2)進入到下載的目錄,將mongodb的安裝包解壓到指定的目錄中:bash

#tar -xvf mongodb-linux-x86_64-rhel70-3.4.4.tgz -C /usr/local

3)進入解壓到的目錄,來啓動mongodb服務數據結構

#cd /usr/local

重命名MongoDb解壓的目錄

#mv mongodb-linux-x86_64-rhel70-3.4.4 mongodb
#cd mongodb

4)啓動MongoDb

#mkdir -p /home/mongodata/ /var/log/mongolog/
#./bin/mongod --dbpath /home/mongodata/ --logpath /var/log/mongolog/mongo.log --fork --port 27017

啓動參數說明:

   --dbpath 數據存儲目錄

   --logpath 日誌存儲目錄

   --port 運行端口

   --fork 後臺運行

5)經過客戶端鏈接到MongoDb

#./bin/mongo

注意:在一些老的版本中MongoDb啓動的時候會事先佔用不少磁盤空間,啓動後可能須要佔3-4G空間,若是虛擬機的空間太小將不能啓動,可是它有一個選項--smallfiles可使啓動時佔用空間縮小至400M左右。

3.mongodb具體操做示例

一 、mongodb的入門操做:

1)查詢全部庫列表

>show dbs;

2)切換數據庫(選擇使用的數據庫)

>use local;

3)建立數據庫

(注意:因爲mongodb數據庫是隱式建立沒有直接的建立數據庫的方法,但能夠直接使用use切換到一個事先不存在的庫下邊,當建立表(collections)的時候會自動建立當前數據庫)

>use shop

(假設shop庫不存在,也能夠直接使用use)

>db.createCollection('user');

(能夠在一個不存在的庫下邊直接建立collections(或者能夠說建立表))

>show dbs;

而後你再去查看庫的時候會發現庫shop已經默認建立出來了。

4)建立一個表(collections)

>db.createCollection('user')

注意:表(也就是collections)也能夠是隱式建立的,還拿上邊的例子說:假如shop庫裏邊不存在一個goods的表(collections),咱們仍然可使用下邊的方式插入數據

>db.goods.insert({_id:1,name:'pipixia',price:52.10});

而後咱們去查看shop這個庫內的表(collections)時,發現goods已經被自動建立出來了。

5)向collections(表)中插入單篇文檔(數據)(插入的數據爲json格式)

>db.user.insert({name:'張三',age:18})

6)查找collections(表)中的內容

>db.user.find()

7)刪除collections(表)()

>db.user.drop()

8)刪除數據庫(databases)

>db.dropDatabase()

2、mongodb的基本操做(增、刪、改、查)CURD

1.增操做:insert

注意:mongodb存儲的是文檔,而所謂的文檔在這裏實際上是json格式的對象

1)增長單篇文檔

>db.collectionName.insert({sn:'001',name:'xiaoming'})

2)增長單篇文檔,並指定id

>db.collectionName.insert({_id:2,sn:'002',name:'xiaohong'})

3)增長多篇文檔(由於json是一個對象,js裏邊有數組的概念,只需把多個對象放到數組裏便可)

>db.collectionName.insert([{sn:'003','name':'zhangfei'},{sn:'004','name':'guanyu'},{sn:'004','name':'liubei'}])

2.刪操做:remove

語法:db.collectionName.remove(查詢表達式,選項)

選項是指{justOne:true/false},是否刪一行,默認是false

注意:

    1.查詢表達式依然是一個json對象

    2.查詢表達式匹配到的行將被刪除

    3.若是沒有查詢表達式,則collections中的全部文檔將所有被刪除

1)刪除指定json文檔(json格式的對象)

例如:刪除collectionName表中sn屬性值爲002的json對象文檔

>db.collectionName.remove({sn:'002'})

2)假如查詢表達式爲空,以下

>db.collectionName.remove()

會刪除庫中的全部文檔,使用要當心

3)假如咱們想刪除符合查詢表達式中的一行數據可使用上邊提到的《選項》功能,如

>db.collectionName.remove({"name":"zhangsan"},true)

則只會刪除全部name符合zhangsan的其中一條文檔數據

3.改操做:update

語法:db.collectionName.update(查詢表達式,新值,選項)

1)查詢表達式是指須要修改誰,新值是指改爲什麼樣,選項是指可選參數

例如:

>db.collectionName.update({name:'zhangfei'},{name:'zhangfeifei'})

查看一下更改結果

>db.collectionName.find()

將會發現修改後的文檔中就剩下id和name列了,而sn列不見了

緣由:新文檔直接替換了舊的文檔,而不是修改

2)可是咱們可使用$set來指定修改某一列

>db.collectionName.update({name:'guanyu'},{$set:{name:'guanyunchang'}})

修改時的賦值表達式

$set 修改某個列的值

$unset 刪除某個列

$rename 重命名某個列

$inc 增大某個列的值

3)來一個複雜的更新操做

先插入一條數據

>db.collectionName.insert({name:'caocao',age:40,sex:'m',addr:'wei')

修改這條數據

>db.collectionName.update({name:'caocao'},{$set:{name:'caoaman'},$unset:{addr:1},$rename:{sex:'gender'},$inc:{age:10}})

4)第三個可選參數option的做用:

{upsert:true/false,multi:true/false}

   upsert是指沒有匹配的行,則直接插入該行。(和mysql中的replace相似)

例如:

>db.collectionName.update({_id:100},{name:'liubei'},{upsert:true})

若是沒有_id爲100的文檔,則直接插入該文檔。

注意:若是既沒有_id爲100的文檔,又沒有upsert可選參數,則該跟新操做不會對錶中的文檔形成影響。

   multi是指要不要改多行

即若是查詢表達式匹配到多行默認狀況下只會更改一行,若是要想修改多行,則須要使用此選項。

例如:

>db.collectionName.update({sex:'m'},$set:{sex:'w'},{multi:true})

會把collectionName中全部sex=m的文檔都修改成sex=w

4.查操做:find,findOne

語法:db.collection.find(查詢表達式,查詢的列)

例如:

1)查詢全部文檔

>db.collectionName.find()

2)查詢全部文檔的sex屬性(列)

>db.collectionName.find({},{sex:1})

3)查詢全部文檔的sex屬性,不查詢_id屬性

>db.collectionName.find({},{sex:1,_id:0})


注意:不管增刪改查都離不開一個查詢表達式,以上的示例都是比較簡單的入門操做

相關文章
相關標籤/搜索