第六章 建議學(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ù)庫(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ù),如下圖
我們即將學(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安裝包
雙擊安裝包后,點(diǎn)擊運(yùn)行
進(jìn)入到mongodb的安裝頁(yè)面,點(diǎn)擊Next進(jìn)行下一步
選擇同意后,點(diǎn)擊Next進(jìn)行下一步
在這里不建議改變安裝目錄,直接點(diǎn)擊Complete進(jìn)行下一步
點(diǎn)擊Install進(jìn)行安裝
等待安裝的進(jìn)度條完成
安裝的進(jìn)度條完成之后,會(huì)進(jìn)入完成頁(yè)面,點(diǎn)擊Finish 就完成了mongodb數(shù)據(jù)庫(kù)的安裝
完成已上為步驟,就安裝成功了
2.檢測(cè)mongodb是否安裝成功,并配置啟動(dòng)命令
在mongodb的安裝目錄的bin目錄下,打開(kāi)cmd命令行,輸入命令 ‘ mongod –help ’出現(xiàn)下圖現(xià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è)置完成后依次點(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è)置成功)
第三步:?jiǎn)?dòng)mongodb服務(wù)
Net start MongoDB
第四步:關(guān)閉mongodb服務(wù)
Net stop MongoDB
mongodb操作
管理員身份運(yùn)行cmd,然后執(zhí)行 mongo,進(jìn)入mongodb的命令狀態(tài)
show dbs 顯示當(dāng)前的數(shù)據(jù)庫(kù),前面兩個(gè)是自帶的,后面兩個(gè)是我自己創(chuàng)建的(大家第一次使用時(shí)只有前面兩個(gè)數(shù)據(jù)庫(kù))
use 數(shù)據(jù)名 切換數(shù)據(jù)庫(kù) 或 創(chuàng)建新的數(shù)據(jù)庫(kù), 下面我創(chuàng)建了一個(gè)名為demo3的數(shù)據(jù)庫(kù)
db.createCollection("表名字") 向數(shù)據(jù)庫(kù)里面添加表 ,下面 創(chuàng)建了一個(gè)表 t1
db 顯示當(dāng)前正在使用的數(shù)據(jù)庫(kù)
show tables 顯示數(shù)據(jù)庫(kù)下的表
再創(chuàng)建一個(gè)表 t2
db.collection.drop() 用來(lái)從數(shù)據(jù)庫(kù)中刪除一個(gè)表
下圖命令刪除了 t1表,返回true表示刪除成功,再顯示表的時(shí)候 t1就沒(méi)有了
db.dropDatabase() 刪除當(dāng)前正在使用的數(shù)據(jù)庫(kù)
上圖刪除了 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í)候可以帶參數(shù),傳入查詢的 json即可。下面我們先添加了兩條數(shù)據(jù)(注意:添加的數(shù)據(jù)name 分別為 zhangsan1 、 zhangsan2,插入不同值方便后面使用),然后實(shí)現(xiàn)了帶參數(shù)和不帶參數(shù)的查詢,結(jié)果不同
修改數(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ù)的字段,使用 $unset
下面代碼刪除了 name為zhangsan 的數(shù)據(jù)的 age屬性 (age后面的屬性值任意寫(xiě),因?yàn)槭莿h除,寫(xiě)多少都沒(méi)有意義,但需要寫(xiě)一個(gè)json格式)
+= 某條數(shù)據(jù),使用$inc
下面代碼將 name 為 zhangsan2的數(shù)據(jù)的 age上疊加10 ,(原來(lái)是25,執(zhí)行以后變成了 35)
Mongo中支持使用 js代碼,包括申明變量、循環(huán)等等
下面的循環(huán)插入10條數(shù)據(jù)。(雖然提示 nInserted:1 ,但已經(jīng)插入了10條數(shù)據(jù))
查詢就可以看到這10條數(shù)據(jù)了。
查詢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)分隔 )
基本的操作就講這么多,希望大家把上面的命令都寫(xiě)完。
明天我們講解:node.js操作mongodb,及操作方法的封裝
http://www.cnblogs.com/chengduxiaoc/p/7016135.html