關於mongodb:是一種非關系系列數據庫
mysql:是關系型數據庫
第一部分:安裝mongodb
1、下載安裝mongodb
2、配置數據目錄
- 創建數據目錄:mkdir c:\data
- 自定義數據目錄:mongod --dbpath "c:\data"
3.添加/刪除Windows服務里面
添加服務
- mongod.exe
- 設置數據存放路徑: --dbpath "C:\mongodb\data\db"
- 設置日志存放路徑: --logpath "C:\mongodb\data\log\log.txt"
- 設置日志的記錄方式:--logappend
- 設置數據庫的端口號:--port 27000
- 設置服務的名稱:--serviceName "Name"
- 設置服務的顯示名稱:--serviceDisplayName "DisplayName"
- 添加到windows服務里:--install
- 安裝mongodb服務(使用管理員權限打開命令)
- 32位系統:mongod --dbpath="C:\data\db" --logpath="C:\data\log\log.txt" --serviceName MongoDB --journal --storageEngine=mmapv1 --install
- 64位系統:mongod --dbpath="C:\data\db" --logpath="C:\data\log\log.txt" --serviceName MongoDB --install
移除服務
- mongod.exe --remove --serviceName "Name"
啟動/停止服務
- net start ServiceName
- net stop ServicceName
4、MongoDB基本命令
mongo --port 27017 連接數據庫
顯示全部的數據庫:show dbs
進入數據庫(創建數據庫) use dbname
- use 數據庫名 如果數據庫存在則是進入到該數據庫
- use 數據庫名 如果數據庫不存在則是創建該數據庫
- 如果創建出來的數據庫是一個空的數據庫,則本質上是和沒有創建一樣的
查看表 show tables
創建數據庫 use newdb
- use 數據庫名 (1)、若存在,則進入數據庫
- (2)、若不存在,則創建該數據庫
- 如果創建出來的數據庫是一個空的,則本質上和沒有創建是一樣的
5、增刪改查
tableName表名
(1)、db.tableName.insert(obj) 添加數據
(2)、db.tableName.find(obj) 找到所有
db.tableName.find().pretty()
(3)、db.tableName.findOne(obj) 找到所有只改變第一個
(4)、db.tableName.remove(obj,isFirst)
- 參數1:刪除條件
- 參數2:是否只刪除匹配到的第一條數據
db.createCollection("表名")創建表
(5)、db.tableName.drop() 刪除表
(6)、db.dropDatabase() 刪除庫
(7)、db.tableName.update({},{},false,true)
- 參數1:條件,
- 參數2:替換,如果{$set:{y:100,x:10}}
- 參數3:不存在是否創建:true:是,false,不創建
- 參數4:是否更新全部符合條件數據:true:是,false:只更新第一條
- 更新單條記錄: db.tableName.update(condition, newObj, false, false)
- 更新多條記錄: db.tableName.update(condition, {$set:newObj}, false, true)
6、mongodb中間件
(1)、引入:mongoose
(2)、連接數據庫:mongoose.connect('mongodb://127.0.0.1/mydb',function(err){})
(3)、Schema = mongoose.Schema; //一種以文件形式存儲的數據庫模型骨架,不具備數據庫的操作能力
(4)、User = new Schema(obj)
(5)、方法:
-
create(model,function(err){}) //由Schema發布生成的模型,具有抽象屬性和行為的數據庫操作對
-
find(model,fields,sort,function(err,docs){})
-
findOne(model,fields,function(err,docs){})
-
findById(model,fields,function(err,docs){})
-
update(model,newfields,options,function(err){})
-
options:{multi: true,overwrite:true}
-
multi:多條記錄更改
-
remove(model,function(err){})
練習 1.連接數據庫 mongo 2.查看所有數據庫 3.創建一個名為blog的庫 4.在blog庫下創建一張名為article的表(集合) 5.刪除blog下的article表 6.刪除blog數據庫 7.再一次查看數據庫,確定blog庫是否還存在
mongoose 操作mongodb的步驟(重點)
1.引入模塊
var mongoose=require("mongoose");
2.連接數據庫
mongoose.connect("mongodb://localhost:27017/shop") //shop數據庫名
2.得到的數據庫連接句柄
var db=mongoose.connwction
3.利用句柄連接數據庫成功的事件
db.on('open', function(err){
if(err){
console.log("連接數據庫失敗")
throw err;
}
console.log("連接成功")
});
4.定義表數據結構
let production= new mongoose.Schema({
id: String,
price:Number,
shopCart: Array
},(versionKey:false));
5.將表的數據結構和表關聯起來
var productModel=mongoose.model("any","production","prodcuts")//any隨便起的,production之前定義的數據結構products表名后兩個關聯
5.導出
module.exports={
隨便起:prodcutModel
}
express-generator
1、用於快速生成一個基於express服務器的項目
2、使用方法
(1)、第一步:全局安裝
- cnpm install express-generator -g
(2)、第二步:使用
- express -e projectName
- 輸入參數說明 -e 使用的模板類型 (-e 代表ejs模板 -pug 代表pug模板)
- projectName 是項目名稱
(3)、進入該項目
- cd projectName
(4)、安裝項目依賴包
- cnpm install