## 数据库
关系型数据库(RDBMS) mysql sql server oracle...
非关系型数据库 mongodb redis...
## MongoDB下载
https://www.mongodb.com/download-center?jmp=homepage#community
## 安装
一路next
配置path环境变量
## 相关概念
MongoDB是c++语言编写的
特点:高性能 易部署 存储数据非常方便
mysql mongodb
数据库 | database | database |
表 | table | collection(集合) |
记录 | row | document(文档) |
字段 | column | field(域) |
索引 | index | index |
表连接 | table joins | 不支持 |
主键 | primary key | _id字段设置为主键 |
mongodb可以建立多个数据库
首先创建一个目录 db 然后打开cmd输入 mongod --dbpath 存储数据库的目录
数据库启动后,重新打开一个cmd,输入mongo
## 数据库常用命令
show dbs 显示当前所有数据库
help 查看命令提示
use movie 创建/切换数据库 当插入一条数据时,数据库自动创建
db/db.getName() 查看当前使用的数据库
db.stats() 显示当前数据库状态
db.version() 查看当前DB版本
db.getMongo() 查看当前DB链接机器地址
db.dropDatabase() 删除当前数据库
## 集合相关操作
创建一个集合 db.createCollection("集合名");
得到指定名称的集合 db.getCollection("集合名")
得到所有集合 db.getCollectionNames()
显当前db所有集合状态 db.printCollectionStats()
## 数据库的CRUD
增加数据
db.集合.insertOne({})
db.集合.insertMany([{},{},...])
db.集合.save()
修改
db.集合.updateOne({条件},{$set:{}})
db.集合.updateMany({条件},{$set:{}})
db.集合.update({条件},{$set:{}},true,true) 默认对满足条件的一文档进行修改,第三个布尔值表示是否当找不到匹配文档时 插入数据,第四个布尔值表示是否对满足条件的多个文档同时修改
删除
db.集合.remove({}) 删除所有满足条件的文档
db.集合.deleteOne({条件}) 删除满足条件的第一个文档
查询
* 查询所有的文档
db.集合.find() select * from 表
* 查询去重后数据
db.集合.distinct("sex") select distinct sex from 表
* 查询age=22的文档
db.集合.find({"age":22}) select * from 表 where age = 22
* 查询age>22的文档
db.集合.find({"age":{$gt:22}}) select * from 表 where age > 22
* 查询age<22的文档
db.集合.find({"age":{$lt:22}}) select * from 表 where age < 22
* 查询age>=22的文档
db.集合.find({"age":{$gte:22}}) select * from 表 where age >= 22
* 查询age<=22的文档
db.集合.find({"age":{$lte:22}}) select * from 表 where age <= 22
* 查询age>=18且age<=22
db.集合.find({age:{$gte:18,$lte22}})
* 查询name中包含abc数据
db.集合.find({name:/abc/})
select * from 表 where name like %abc%
* 查询name中以abc开头数据
db.集合.find({name:/^abc/})
select * from 表 where name like abc%
* 查询指定列name age数据
db.集合.find({},{name:1,age:1})
select name, age from 表
* 查询指定列name age数据 age>22
db.集合.find({age:{$gt:22}},{name:1,age:1})
select name, age from 表 where age > 22
* 按照年龄排序
升序 db.集合.find().sort({age:1})
select * from 表 order by age asc
降序 db.集合.find().sort({age:-1})
select * from 表 order by age desc
* 查询name=zs age=19的数据
db.集合.find({name:"zs",age:19})
select * from 表 where name="zs" and age = 19
* 查询前n条数据
db.集合.find().limit(5)
select top n * from 表
* 查询前8条以后数据
db.集合.find().skip(10)
select * from 表 where id not in (select top 8 * from) 表
* 查询5-10之间的数据
db.集合.find().limit(5).skip(5)
* 查询第一条数据
db.集合.findOne()
* 查询某个结果集的记录条数
db.集合.find({age:{$gte:18}}).count()
select count(*) from 表 where age>=18