第六章 建議學習時間4小時 課程共10章
學習方式:詳細閱讀,並手動實現相關代碼
學習目標:此教程將教會大家 安裝Node、搭建服務器、express、mysql、mongodb、編寫後臺業務邏輯、編寫接口,最後完成一個完整的項目後臺,預計共10天課程。
數據庫
數據庫管理結構,一般分爲兩種:B/S架構 C/S架構。
B/S架構: Browser/Server,瀏覽器/服務器模式,即通過瀏覽器和服務器端的數據庫進行交互
C/S架構: Client/Server,客戶端/服務器模式,即通過客戶端和服務器的數據庫進行交互(我們使用的cmd命令行就可以算是一個客戶端)
數據庫根據數據結構分爲:關係型數據庫和非關係型數據庫
關係型數據庫就如一般很規整的表格,可以根據橫向縱向去定位某條數據,如下圖
一般的數據庫都是關係型數據庫 ,如 mySQL,oracle
而非關係型數據庫是不能通過橫向縱向去定位一條數據,它的結構更像是一個數組裏放了很多個json數據,如下圖
我們即將學習的mongodb就是非關係型數據庫
當下比較火的數據庫有:oracle、mySQL、SQL Server
相比這些數據庫,mongodb有體積小、能方便快捷的操作,很適合中小型項目的快速開發
而且它可以很好的配置node.js使用 (node.js也可以操作其他的數據庫,以後有時間會單獨給大家介紹 node.js操作 mySQL)
mongodb安裝
1.在官網上下載所需的安裝軟件
本課程軟件下載 鏈接:http://pan.baidu.com/s/1kVPxBJT 密碼:uziu
下載地址:https://www.mongodb.com/download-center#community
根據所需下載相應版本的mongodb安裝包
雙擊安裝包後,點擊運行
進入到mongodb的安裝頁面,點擊Next進行下一步
選擇同意後,點擊Next進行下一步
在這裏不建議改變安裝目錄,直接點擊Complete進行下一步
點擊Install進行安裝
等待安裝的進度條完成
安裝的進度條完成之後,會進入完成頁面,點擊Finish 就完成了mongodb數據庫的安裝
完成已上爲步驟,就安裝成功了
2.檢測mongodb是否安裝成功,並配置啓動命令
在mongodb的安裝目錄的bin目錄下,打開cmd命令行,輸入命令 ‘ mongod –help ’出現下圖現在這安裝成功
設置數據和日誌的儲存位置和配置mongodb服務
(1)設置數據文件和日誌文件儲存位置
按自己的愛好設置文件的儲存位置,本安裝文檔的儲存位置設置在E盤,目錄如下
E:\MongoData
├─data #MongoDB數據庫中的數據的儲存位置
└─log #MongoDB數據庫中的日誌的儲存位置
└─mongodb.log # MongoDB數據庫中的日誌的儲存文件 (創建方式:創建一個txt,把後綴名改爲log)
(2)配置mongodb服務
1/設置mongodb的環境變量
計算機>右鍵>屬性>高級系統設置>環境變量>找到系統變量中的path變量
向path變量的結尾處添加mongodb的安裝目錄下bin目錄的地址(如果原來的path路徑後面沒有分號,需要添加一個英文的分號再添加mongodb的目錄)
如果按本文檔安裝的mongodb安裝目錄下bin目錄爲:
C:\Program Files\MongoDB\Server\3.4\bin
設置完成後依次點擊確定,就設置好了mongodb的環境變量了
2/安裝mongodb服務
第一步:按照設置的儲存位置,修改下面的命令
(ps:如果是按本文檔設置的儲存位置,不用在做更改)
mongod --logpath "E:\MongoData\log\mongodb.log" --logappend --dbpath "E:\MongoData\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
#命令中字段的說明
*** --logpath 指定MongoDB日誌文件的存儲路徑,注意是指定文件不是目錄
*** --logappend 使用追加的方式寫日誌
*** --dbpath 指定數據庫數據的存儲路徑
*** --directoryperdb 每個DB都會新建一個目錄
*** --serviceName 指定服務名稱
*** --serviceDisplayName 指定服務名稱,有多個mongodb服務時執行。
*** --install 指定作爲一個Windows服務安裝。
第二步:在開始處用管理員身份打開cmd命令行,輸入上面第一步修改好的指令回車(ps:一定要以管理員身份運行),(運行完成沒有任何錯誤提示,表示設置成功)
第三步:啓動mongodb服務
Net start MongoDB
第四步:關閉mongodb服務
Net stop MongoDB
mongodb操作
管理員身份運行cmd,然後執行 mongo,進入mongodb的命令狀態
show dbs 顯示當前的數據庫,前面兩個是自帶的,後面兩個是我自己創建的(大家第一次使用時只有前面兩個數據庫)
use 數據名 切換數據庫 或 創建新的數據庫, 下面我創建了一個名爲demo3的數據庫
db.createCollection("表名字") 向數據庫裏面添加表 ,下面 創建了一個表 t1
db 顯示當前正在使用的數據庫
show tables 顯示數據庫下的表
再創建一個表 t2
db.表名.drop() 用來從數據庫中刪除一個表
下圖命令刪除了 t1表,返回true表示刪除成功,再顯示錶的時候 t1就沒有了
db.dropDatabase() 刪除當前正在使用的數據庫
上圖刪除了 demo3, 然後顯示數據庫的時候就沒有demo3了
我們重新創建 demo3數據庫,然後插入 t1表,然後插入數據
插入數據 db.表名.insert({}); 參數中傳入json數據,當插入成功以後,系統會自動給數據添加一個獨一無二的 _id
使用 db.表名.find()查看數據
查詢的時候可以帶參數,傳入查詢的 json即可。下面我們先添加了兩條數據(注意:添加的數據name 分別爲 zhangsan1 、 zhangsan2,插入不同值方便後面使用),然後實現了帶參數和不帶參數的查詢,結果不同
修改數據 update({修改的條件},{修改器:{修改內容}},第三個參數,第四個參數)
修改器: $set 修改 $unset刪除字段 $inc 當於編程語言中的 “+=”
第三個參數的意思是,如果不存在update的記錄,是否插入objNew,true爲插入,默認是false,不插入。
第四個參數 ,默認是false,只更新找到的第一條記錄,如果這個參數爲true,就把按條件查出來多條記錄全部更新。
下面我們來修改一條數據,修改器使用 $set
運行後下面代碼後,我們發現 name爲zhangsan的數據中的 age被修改爲了50 (原來是25)
刪除數據的字段,使用 $unset
下面代碼刪除了 name爲zhangsan 的數據的 age屬性 (age後面的屬性值任意寫,因爲是刪除,寫多少都沒有意義,但需要寫一個json格式)
+= 某條數據,使用$inc
下面代碼將 name 爲 zhangsan2的數據的 age上疊加10 ,(原來是25,執行以後變成了 35)
Mongo中支持使用 js代碼,包括申明變量、循環等等
下面的循環插入10條數據。(雖然提示 nInserted:1 ,但已經插入了10條數據)
查詢就可以看到這10條數據了。
查詢json支持高級篩選方式
$lt 小於 <
$gt 大於 >
$gte 大於等於 >=
$lte 小於等於 <=
如:
db.t1.find({age:{$lt:5}}) 就可以查找age小於5的全部數據
db.t1.find({age:{$lt:5,$gt:1}}) 就可以查找age小於5大於1 的全部數據 (多個篩選條件之間使用逗號分隔 )
導入導出
導出:mongoexport可以把一個collection導出成JSON格式或CSV格式的文件。可以通過參數指定導出的數據項,也可以根據指定的條件導出數據。
、語法:
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
參數說明:
-d :數據庫名
-c :collection名
-o :輸出的文件名
--type : 輸出的格式,默認爲json
-f :輸出的字段,如果-type爲csv,則需要加上-f "字段名"
、示例:
mongoexport -d mongotest -c users -o D:/users.json --type json -f "_id,user_id,user_name,age,status"
導入:
、語法:
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
參數說明:
-d :數據庫名
-c :collection名
--type :導入的格式默認json
-f :導入的字段名
--headerline :如果導入的格式是csv,則可以使用第一行的標題作爲導入的字段
--file :要導入的文件
、示例:
mongoimport -d mongotest -c users --file D:/users.json --type json
基本的操作就講這麼多,希望大家把上面的命令都寫完。
明天我們講解:node.js操作mongodb,及操作方法的封裝