第六章 建議學(xué)習(xí)時(shí)間4小時(shí)  課程共10章

學(xué)習(xí)方式:詳細(xì)閱讀,并手動(dòng)實(shí)現(xiàn)相關(guān)代碼

學(xué)習(xí)目標(biāo):此教程將教會(huì)大家 安裝Node、搭建服務(wù)器、express、mysql、mongodb、編寫(xiě)后臺(tái)業(yè)務(wù)邏輯、編寫(xiě)接口,最后完成一個(gè)完整的項(xiàng)目后臺(tái),預(yù)計(jì)共10天課程。

 

數(shù)據(jù)庫(kù)


 

數(shù)據(jù)庫(kù)管理結(jié)構(gòu),一般分為兩種:B/S架構(gòu)   C/S架構(gòu)。

B/S架構(gòu):  Browser/Server,瀏覽器/服務(wù)器模式,即通過(guò)瀏覽器和服務(wù)器端的數(shù)據(jù)庫(kù)進(jìn)行交互

C/S架構(gòu):  Client/Server,客戶端/服務(wù)器模式,即通過(guò)客戶端和服務(wù)器的數(shù)據(jù)庫(kù)進(jìn)行交互(我們使用的cmd命令行就可以算是一個(gè)客戶端)

 

數(shù)據(jù)庫(kù)根據(jù)數(shù)據(jù)結(jié)構(gòu)分為:關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)

關(guān)系型數(shù)據(jù)庫(kù)就如一般很規(guī)整的表格,可以根據(jù)橫向縱向去定位某條數(shù)據(jù),如下圖

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

一般的數(shù)據(jù)庫(kù)都是關(guān)系型數(shù)據(jù)庫(kù) ,如 mySQL,oracle

而非關(guān)系型數(shù)據(jù)庫(kù)是不能通過(guò)橫向縱向去定位一條數(shù)據(jù),它的結(jié)構(gòu)更像是一個(gè)數(shù)組里放了很多個(gè)json數(shù)據(jù),如下圖

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

我們即將學(xué)習(xí)的mongodb就是非關(guān)系型數(shù)據(jù)庫(kù)

 

當(dāng)下比較火的數(shù)據(jù)庫(kù)有:oracle、mySQL、SQL Server

相比這些數(shù)據(jù)庫(kù),mongodb有體積小、能方便快捷的操作,很適合中小型項(xiàng)目的快速開(kāi)發(fā)

而且它可以很好的配置node.js使用  (node.js也可以操作其他的數(shù)據(jù)庫(kù),以后有時(shí)間會(huì)單獨(dú)給大家介紹  node.js操作 mySQL)

 

mongodb安裝


 

1.在官網(wǎng)上下載所需的安裝軟件

下載地址:https://www.mongodb.com/download-center#community

根據(jù)所需下載相應(yīng)版本的mongodb安裝包

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

雙擊安裝包后,點(diǎn)擊運(yùn)行

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

進(jìn)入到mongodb的安裝頁(yè)面,點(diǎn)擊Next進(jìn)行下一步

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

選擇同意后,點(diǎn)擊Next進(jìn)行下一步

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

這里不建議改變安裝目錄,直接點(diǎn)擊Complete進(jìn)行下一步

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

點(diǎn)擊Install進(jìn)行安裝

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

等待安裝的進(jìn)度條完成

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

安裝的進(jìn)度條完成之后,會(huì)進(jìn)入完成頁(yè)面,點(diǎn)擊Finish 就完成了mongodb數(shù)據(jù)庫(kù)的安裝

 

 平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

完成已上為步驟,就安裝成功了

 

2.檢測(cè)mongodb是否安裝成功,并配置啟動(dòng)命令

在mongodb的安裝目錄的bin目錄下,打開(kāi)cmd命令行,輸入命令 ‘ mongod –help ’出現(xiàn)下圖現(xiàn)在這安裝成功

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

設(shè)置數(shù)據(jù)和日志的儲(chǔ)存位置和配置mongodb服務(wù)

(1)設(shè)置數(shù)據(jù)文件和日志文件儲(chǔ)存位置

按自己的愛(ài)好設(shè)置文件的儲(chǔ)存位置,本安裝文檔的儲(chǔ)存位置設(shè)置在E盤(pán),目錄如下

E:\MongoDaTa

├─data   #MongoDB數(shù)據(jù)庫(kù)中的數(shù)據(jù)的儲(chǔ)存位置

└─log    #MongoDB數(shù)據(jù)庫(kù)中的日志的儲(chǔ)存位置

    └─mongodb.log   # MongoDB數(shù)據(jù)庫(kù)中的日志的儲(chǔ)存文件

(2)配置mongodb服務(wù)

    1/設(shè)置mongodb的環(huán)境變量

    計(jì)算機(jī)>右鍵>屬性>高級(jí)系統(tǒng)設(shè)置>環(huán)境變量>找到系統(tǒng)變量中的path變量

 

    向path變量的結(jié)尾處添加mongodb的安裝目錄下bin目錄的地址

    如果按本文檔安裝的mongodb安裝目錄下bin目錄為:

    C:\Program Files\MongoDB\Server\3.4\bin

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

    設(shè)置完成后依次點(diǎn)擊確定,就設(shè)置好了mongodb的環(huán)境變量了

 

    2/安裝mongodb服務(wù)

    第一步:按照設(shè)置的儲(chǔ)存位置,修改下面的命令

    (ps:如果是按本文檔設(shè)置的儲(chǔ)存位置,不用在做更改)

mongod --logpath "E:\MongoData\log\mongodb.log" --logappend --dbpath "E:\MongoData\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

#命令中字段的說(shuō)明

***  --logpath   指定MongoDB日志文件的存儲(chǔ)路徑,注意是指定文件不是目錄

***  --logappend  使用追加的方式寫(xiě)日志

***  --dbpath   指定數(shù)據(jù)庫(kù)數(shù)據(jù)的存儲(chǔ)路徑

***  --directoryperdb  每個(gè)DB都會(huì)新建一個(gè)目錄

***   --serviceName   指定服務(wù)名稱

***  --serviceDisplayName  指定服務(wù)名稱,有多個(gè)mongodb服務(wù)時(shí)執(zhí)行。

***  --install  指定作為一個(gè)Windows服務(wù)安裝。

    第二步:在開(kāi)始處用管理員身份打開(kāi)cmd命令行,輸入上面第一步修改好的指令回車(chē)ps:一定要以管理員身份運(yùn)行),(運(yùn)行完成沒(méi)有任何錯(cuò)誤提示,表示設(shè)置成功)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

    第三步:?jiǎn)?dòng)mongodb服務(wù)

    Net start MongoDB

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

    第四步:關(guān)閉mongodb服務(wù)

    Net stop MongoDB

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

mongodb操作


 

管理員身份運(yùn)行cmd,然后執(zhí)行 mongo,進(jìn)入mongodb的命令狀態(tài)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

 show dbs 顯示當(dāng)前的數(shù)據(jù)庫(kù),前面兩個(gè)是自帶的,后面兩個(gè)是我自己創(chuàng)建的(大家第一次使用時(shí)只有前面兩個(gè)數(shù)據(jù)庫(kù))

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

 use 數(shù)據(jù)名    切換數(shù)據(jù)庫(kù) 或 創(chuàng)建新的數(shù)據(jù)庫(kù),  下面我創(chuàng)建了一個(gè)名為demo3的數(shù)據(jù)庫(kù)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

 

 db.createCollection("表名字")   向數(shù)據(jù)庫(kù)里面添加表  ,下面 創(chuàng)建了一個(gè)表 t1

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

db 顯示當(dāng)前正在使用的數(shù)據(jù)庫(kù)

show tables 顯示數(shù)據(jù)庫(kù)下的表  

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

再創(chuàng)建一個(gè)表 t2

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

db.collection.drop()  用來(lái)從數(shù)據(jù)庫(kù)中刪除一個(gè)表

下圖命令刪除了 t1表,返回true表示刪除成功,再顯示表的時(shí)候 t1就沒(méi)有了

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

db.dropDatabase() 刪除當(dāng)前正在使用的數(shù)據(jù)庫(kù)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

上圖刪除了 demo3, 然后顯示數(shù)據(jù)庫(kù)的時(shí)候就沒(méi)有demo3了

 

我們重新創(chuàng)建 demo3數(shù)據(jù)庫(kù),然后插入 t1表,然后插入數(shù)據(jù)

插入數(shù)據(jù)  db.表名.insert({});   參數(shù)中傳入json數(shù)據(jù),當(dāng)插入成功以后,系統(tǒng)會(huì)自動(dòng)給數(shù)據(jù)添加一個(gè)獨(dú)一無(wú)二的 _id

使用 db.表名.find()查看數(shù)據(jù)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

查詢的時(shí)候可以帶參數(shù),傳入查詢的 json即可。下面我們先添加了兩條數(shù)據(jù)(注意:添加的數(shù)據(jù)name 分別為 zhangsan1  、 zhangsan2,插入不同值方便后面使用),然后實(shí)現(xiàn)了帶參數(shù)和不帶參數(shù)的查詢,結(jié)果不同

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

修改數(shù)據(jù) update({修改的條件},{修改器:{修改內(nèi)容}},第三個(gè)參數(shù),第四個(gè)參數(shù))

修改器:  $set 修改    $unset刪除字段  $inc 當(dāng)于編程語(yǔ)言中的 “+=

第三個(gè)參數(shù)的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認(rèn)是false,不插入。

第四個(gè)參數(shù) ,默認(rèn)是false,只更新找到的第一條記錄,如果這個(gè)參數(shù)為true,就把按條件查出來(lái)多條記錄全部更新。

 

下面我們來(lái)修改一條數(shù)據(jù),修改器使用 $set

運(yùn)行后下面代碼后,我們發(fā)現(xiàn) name為zhangsan的數(shù)據(jù)中的 age被修改為了50  (原來(lái)是25)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

刪除數(shù)據(jù)的字段,使用 $unset

下面代碼刪除了 name為zhangsan 的數(shù)據(jù)的 age屬性 (age后面的屬性值任意寫(xiě),因?yàn)槭莿h除,寫(xiě)多少都沒(méi)有意義,但需要寫(xiě)一個(gè)json格式)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

 +=  某條數(shù)據(jù),使用$inc  

下面代碼將 name 為 zhangsan2的數(shù)據(jù)的  age上疊加10 ,(原來(lái)是25,執(zhí)行以后變成了 35)

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

Mongo中支持使用 js代碼,包括申明變量、循環(huán)等等

下面的循環(huán)插入10條數(shù)據(jù)。(雖然提示 nInserted,但已經(jīng)插入了10條數(shù)據(jù))

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

查詢就可以看到這10條數(shù)據(jù)了。

 平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

查詢json支持高級(jí)賽選方式   

$lt  小于      <

$gt  大于      >

$gte 大于等于  >=

$lte 小于等于  <=

如:

db.t1.find({age:{$lt:5}})   就可以查找age小于5的全部數(shù)據(jù)

db.t1.find({age:{$lt:5,$gt:1}})   就可以查找age小于5大于1 的全部數(shù)據(jù)     (多個(gè)篩選條件之間使用逗號(hào)分隔    )

平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),游戲開(kāi)發(fā),動(dòng)畫(huà)培訓(xùn)

 

基本的操作就講這么多,希望大家把上面的命令都寫(xiě)完。

 

明天我們講解:node.js操作mongodb,及操作方法的封裝

http://www.cnblogs.com/chengduxiaoc/p/7016135.html