#安装mongodb#
第一步 下载mongoDb: 官网/
第二步 进行安装配置修改Data directory 和 Log Directory 将数据目录和日志目录存放在D盘
第三步 取消install MongoDb Compass这个是安装可视化工具的意思在这里不需要
#配置环境变量加入到系统中的path环境变量中#
第一步 选择计算机右击属性 高级系统设置 高级 环境变量 系统变量 path 新建 把数据库的目录路劲到bin这一层
# mongodb账户权限的配置
第一步 :mongo进入链接
第二步 use admin
第三步 创建超级管理员:({user:'admin',pwd:'123456',roles:[{role:'root',db:'admin'}]})
第四步 修改配置文件项目安装包的bin目录下面的 用记事本进行打开:找到security这一项: 添加 security:authorization:enabled
第五步 重启服务;window+r 输入回车 找MongoDB Server点击右键重启
第六步 重新登录: mongo admin -u admin -p 123456
# 单个创建数据库的权限:
第一步 use user;
第二步 ({user:'useradmin',pwd:'123456',roles:[{role:'dbOwner',db:'user'}]})
第三步 进入单独的数据库 mongo user -u useradmin -p 123456
# 其他命令操作
查看当前库下的用户 show users
删除用户 ('useradmin')
修改密码 ('admin',{pwd:'234567'})
密码认证 ('admin','password')
#mongo数据库的命令操作#
第一步进行链接 打开终端输入mongo 进入链接
第二步查看所有数据库 输入 show dbs; admin config local是数据内置的数据库 不用管理
第三步创建数据库及进入数据库:use itying ; 创建itying的数据库,这时候show dbs是查不到当前表的,需要往数据库中插入表以及数据。进入数据库也是执行use itying
第四步插入表和数据输入 ({"name":"zhangsan"}) 相当于创建了user表插入了数据
第五步查看数据中所有的表也叫集合:进入数据库 use itying; show collections;最后是user表
第六步查看user表中的数据 ()
第七步删除数据库 首先要进入到数据库use itying;删除数据库 ();
第八步删除表也就是集合: ()
#查找数据的操作user表#
查找所有的记录 ()
查找指定数据 ({"age":"12"})
查询大于或小于age 22的方法: ({'age':{$gt:22}}) ({'age':{$lt:22}})
查询大于等于或小于等于age 22的方法: ({'age'{$gte:22}}) ({'age':{$lte:22}})
查找age>=23 age<=26的方法: ({"age":{$gte:23,$lte26}})
模糊查询用于搜索,查询name中包含zhang的数据:({name:/zhang/})
查找name中以z开头的数据: ({name:/^z/})
查找name中以s结尾的数据: ({name:/s$/})
查找指定列的数据比如name;({}.{name:1})
查找指定列的数据并有条件比如age>20只显示age; ({"age":{$gt:20}},{age:1})
按照年龄进行升序 降序;().sort({age:1}) ().sort({age:-1})
查询age=12 name='zs'; ({name:'zs',age:12})
查询前5条数据 ().limit(5)
查询10条以后的数据 (10)
查询10条以后的两条数据(10).limit(2)
查询数据的数量 ().count()
limit与skip可用于分页查询 ().limit(每页数).skip(第几页-1再乘每页数)
或的语法使用 ({$or:[{age:22},{age:25}]})
查询第一条数据 ()
查询某个结果的数据统计 ({age:{$gte:25}}).count()
#mongodb数据的增删改查#
把name是zs的age修改为18: ({name:'zs'},{$set:{'age':18}});也可以进行新增
把所有匹配的全部更新把age为12的性别改为男: ({'age':12},{$set:{"sex":"男"}},{multi:true})
删除数据:({age:12})
按查找条件删除并且只删除一条数据 ({age:{$gt:12}},{justOne:true})
# 索引基础 查找数据的时间会变得更快 #
查询某个语句具体执行的时间: ({name:'zs'}).explain('executionStats')
查询当前集合的索引: ()
给name创建索引:({'name':1})
删除索引: ({"name":1})
给字段设置唯一的索引,让字段的值不能够进行重复:({'age':1},{"unique":true})
# 关系型数据库表与表之间的关系 #
1 一对一的关系:一个人对应一个身份证
2 一对多的关系:一个班级对应多个学生
3 多对对的关系:一个学生可以选择多门课程 一门课程也可以被多个学生选修
# mongoDB聚合管道:可以对集合中的文档进行变换和组合 #
数据模拟:order订单表, 订单商品表order_item
({"order_id":"1", "uid":10, "trade_no":"111", "all_price":100, "all_mum":2})
({"order_id":"2", "uid":7, "trade_no":"222", "all_price":90, "all_mum":2})
({"order_id":"3", "uid":3, "trade_no":"333", "all_price":20, "all_mum":6})
db.order_item.insert({"order_id":"1", "title":'商品鼠标', "price":"50", "mum":1})
db.order_item.insert({"order_id":"1", "title":'商品键盘', "price":"50", "mum":1})
db.order_item.insert({"order_id":"2", "title":'牛奶', "price":"50", "mum":1})
db.order_item.insert({"order_id":"2", "title":'酸奶', "price":"40", "mum":1})
db.order_item.insert({"order_id":"3", "title":'矿泉水', "price":"2", "mum":5})
db.order_item.insert({"order_id":"3", "title":'毛巾', "price":"10", "mum":1})
1 $project查询指定的字段,最后的结果就是只显示指定的字段。
比如查找order中tarde_no和all_price字段
([
{
$project:{trade_no:1,all_price:1}
}
])
2 $match用于过滤相当与find()方法中的参数
([
{
$project:{trade_no:1,all_price:1}
},
{
$match:{"all_price":{$gte:90}}
}
])
3 $group统计每个订单的订单数量,按照订单号进行分组 并求num的和
db.order_item.aggregate([
{
$group:{_id:"$order_id",total:{$sum:“$num”}}
}
])
4 $sort 进行排序
([
{
$project:{trade_no:1,all_price:1}
},
{
$sort:{"all_price":-1}
}
])
5 $limit 限制返回的数据条数
([
{
$project:{trade_no:1,all_price:1}
},
{
$sort:{"all_price":-1}
},
{
$limit:1
},
])
6 $skip 跳过几条数据
([
{
$project:{trade_no:1,all_price:1}
},
{
$sort:{"all_price":-1}
},
{
$skip:10
},
])
7 $lookup 用于表关联,查询订单表中某个订单号的数据对应商品表中的所有的数据
例如:[order_id:'', Trade_no:'', items:[{title:'鼠标',price:20},{title:'键盘',price:30}] ]
([
{
$lookup:
{
from :'order_item', 要关联的表
localFiled:‘order_id’, 当前表要关联的字段
foreignFieid:‘order_id’ , 要关联表对应的id,
as:'items' 用什么字段存储数据
}
},
{
$match:{"all_price":{$gte:90}} 后面可以再跟筛选的条件
}
])
# nodejs 操作mongoDB数据库 #
第一步初始化项目 npm init -y 进行安装 npm install mongodb --save
第二步 进行链接
const MongoClient = require('mongodb').MongoClient
const url = 'mongodb://localhost:27017' 数据库的地址:通过cmd打开终端输入monge回车
会显示地址。
const dbName = 'myproject' // 要操作的数据库
const client = new MongoClient(url,{useUnifiedTopology:true})
(function(err){
if(err){('链接失败') return }
('Connected successfully to server')
const db = (dbName) 通过db就可以操作myproject的数据库了
查找数据从user表中查找
('user').find({}).toArray((err,data)=>{
(data)
() 操作后一定要关闭链接
})
增加数据
('user').insertOne({'name':'zs'},(err,data)=>{
if(err){('增加失败') return }
('增加成功')
() 操作后一定要关闭链接
})
删除一条数据
('user').deleteOne({'name':'zs'},(err,data)=>{
if(err){('删除失败') return }
('删除成功')
() 操作后一定要关闭链接
})
删除多条数据
('user').deleteMany({'name':'zs'},(err,data)=>{
if(err){('删除失败') return }
('删除成功')
() 操作后一定要关闭链接
})
修改数据
('user').updateOne({'name':'zs'},{$set:{"name":"ls"}},(err,data)=>{
if(err){('修改失败') return }
('修改成功')
() 操作后一定要关闭链接
})
})
# 服务器与数据库之间的链接 #
const {MongoClient} = require('mongodb')
const url = 'mongodb://localhost:70732'
const dbName = 'itying'
('/',function(req,res)=>{
(url,(err,client)=>{
if(err){(err) return }
let db = (dbName)
db,collection('user').find({}).toArray((err,data)=>{
if(err){(err) return }
(data)
() 操作后一定要关闭链接
})
})
})