mongoDB是一个数据库 它是介于关系与非关系之间的数据库。
关系 sql 语言
关系数据库遵循ACID规则:
Atomicity原子性
Consistency一致性 如:a+b=10;a变b也要变
Isolation独立性
Durability持久性 会永久保存保存数据库
reolis
非关系
数据库:存储 数据的 仓库
分类:
1 关系型数据库 :表格
mysql oracle sqlsever
二维表格
用户基本信息表
|id | name | age |sf|
| 1 |gao |18 |lsoshi|
| 2 | wang | 21 | |
主键
一年级成绩表
|id|el|cn |sx|ids|
|1 |10|100|30|1 |
|2 |10|100|30|2 |
外键
二年级成绩表
|id|el|cn |sx|ids|
|1 |10|100|30|1 |
|2 |10|100|30|2 |
外键
sql 语言 selsct name from 表名
一对一
一对多
2 非关系型数据库 : document文档格式,.json --数据库
1、(mongod --dbpath c:/data/db)
2、 mongo
mongodb
stu .json --数据库 集合 --- 文档
{ "user":[
{"name":"gao","age":18,"sf":"laoshi"},
{"name":"wang","age":21}
]
},
{ "laoshi":[
{"name":"gao","age":18,"sf":"laoshi"},
{"name":"wang","age":21}
]
}
分布式系统: 由多台计算机和通信的软件通过计算机网络连接组成
分布式计算缺点:故障排除 软件 网络 安全性
区别:
1、关系型数据库 可以看做事 二维表格
非关系型数据库 document文档格式, json数据格式
2、关系型数据库 不方便扩展
非关系型 方便扩展
3、 关系型数据库 可以通过 sql 语言操作 可支持 复杂查询
非关系型 通过 对象的方式操作
4、非关系 简单方便
存储方式 : 分布式文件存储
port 27017
c++ 写的底层
\\
数据库 ---集合 --- 文档
database ---collection ---document
命令:
db.help() 帮助
show dbs 查看有哪些数据库
use 数据库名 如果有 使用 /如果没有 创建
db.dropDatabase 删除的数据库(当前)
db.createCollection('集合名') 创建集合
db.集合名.drop() 删除当前集合
show collections 查看集合
db.集合名.insert(json格式数据) 插入文档
db.集合名.insertOne({"a": 3}) 插入一行
db.集合名.insertMany([文档,文档]) 插入多条
db.集合名.find() 查询文档
db.xuesheng.find({"n":"li","a":12}) and
db.xuesheng.find({$or:[{"n":"li"},{"a":190}]}) or
db.集合名.update(条件,{$set:新值}) 修改
db.xuesheng.update({"name":"zhao"},{$unset:{"age":"34"}}) 修改
db.集合名.remove(条件)({“id”:“1”}) 删除
remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。
db.集合名.find().pretty() 查询文档 命令行 json 展开显示
db.集合名.find({键名:{条件修饰符 : 值}})
大于 gt
小于 lt
等于 et
不等于net
删除数据库
条件修饰符
$gt > $lt <
$eq = $ne !=
$gte >= $lte <=
save() 方法通过传入的文档来替换已有文档
> db.xuesheng.save({ "_id" : ObjectId("5ad062acc9177f6d0dd541e1"), "name" : "zsssssss" })
3.2 之后新增
db.collection.updateOne() 向指定集合更新单个文档
db.collection.updateMany() 向指定集合更新多个文档
$type 操作符
Double 1
String 2
Object 3
Array 4
Boolean 8
Date 9
Null 10
db.集合名.find({"a":{$type:1}})
查询 几条
db.集合名.find().limit(3)
db.xuesheng.find().skip(2) //跳过俩条
db.xuesheng.find().skip(2).limit(2) //跳过俩条显示俩条
排序
> db.xuesheng.find().sort({"要排序的键名":-1}) //-1 从大到小 1 从小到大
Mongooose中 三个概念:
Schema Model Document
文件上传
1 input 的type="file"
2 修改form enctype
application/x-www-form-urlencoded ?name
multipart/from-data
text/plain 空格转为+号,
3 methosd post