关于mongodb:是一种非关系系列数据库
mysql:是关系型数据库
第一部分:安装mongodb
1、下载安装mongodb
2、配置数据目录
- 创建数据目录:mkdir c:data
- 自定义数据目录:mongod --dbpath "c:data"
3.添加/删除Windows服务里面
添加服务
- mongod.exe
- 设置数据存放路径: --dbpath "C:mongodbdatadb"
- 设置日志存放路径: --logpath "C:mongodbdataloglog.txt"
- 设置日志的记录方式:--logappend
- 设置数据库的端口号:--port 27000
- 设置服务的名称:--serviceName "Name"
- 设置服务的显示名称:--serviceDisplayName "DisplayName"
- 添加到windows服务里:--install
- 安装mongodb服务(使用管理员权限打开命令)
- 32位系统:mongod --dbpath="C:datadb" --logpath="C:dataloglog.txt" --serviceName MongoDB --journal --storageEngine=mmapv1 --install
- 64位系统:mongod --dbpath="C:datadb" --logpath="C:dataloglog.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