目录
1.docker安装
2.mondo概念解析
3.数据库操作
4.基本数据类型
5. 适合使用场景
6.对集合操作
7.常用操作
1.docker安装
docker pull mongo:latest
docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo
docker exec -it mymongo /bin/bash
mongo
2.mondo概念解析
3.数据库操作
特点:
1.键值对有序
2.文档的值不仅可以在双引号里面的字符,还可以是其他集中数据类型
3.MongoDb区分类型和大小写
4.MongoDB的文档不能有重复的建
5.文档的建是字符串,除了少数例外情况,可以使用任意UTF-8字符
6.健不能包含\0(空字符)、\0表示健的结束
7..和$有特殊意思,只有再特殊环境下才可以使用
8.以_开头的键是保留的(非杨哥要求)
db.help() | 查看命令提示 |
user test | 切换/创建数据库 |
show dbs | 查询所有数据库 |
db.getMongo() | 查看当前db版本 |
db.dropDatabase() | 删除当前数据库 |
db,getName() | 查看当前使用数据库 |
db.stats() | 查看当前db状态 |
db.version(); | 查看当前db版本 |
4.基本数据类型
RDBMS(关系型数据库)和MongoDB特点区别
5. 适合使用场景
5.1优点
1.对数据库高并发的读写
2,对海量数据的高效率存储和访问
3.对数据库的高扩展和高可用
5.2缺点
1.数据库事务一致性的需求
2.数据的写实性和读取实时性需求
3.对复杂SQL,特变多表关联查询的需求
6.对集合操作
1.db.crerateCollection("名字") 创建集合(创建表)
2.db.getCollection("user") 得到指定名称的集合(table)
7.常用操作
保存
db.表.save({key:value,key:value}) 不需要主键id
find查找
db.表.find() 查询集合全部内容
db.表.find({key:value}) 条件查询
例子:db.User.find({age:20}, {'name':1, 'age':1}) select name, age from User where age = 20
db.表.find({}).sort({key:1或-1}) 使用1和-1来指定排序方式
举例:db.User.find().sort({age:1}) select * from User skip 2 limit 3
db.表.find().skip(1).limit(3) 分页查找 select * from dict limit 1,3;
db.表.find({age:{$in:[11,1,23]}}) mysql中in查找 select * from 表 where age in (数据1,数据2)
db.表.find(age:{$gt:20}).count select count(*) from 表where age >20
db.表.find($or:[{age:20},{age:30}]) 查询结果值为20或30select * from 表 where age=20or age=30
Update更新
dp.表.update({name:'lucy'},{$set:{age:100}}) update 表 set age=100 where name="lucy“
Update()有几个参数需要注意。
db.collection.update(criteria, objNew, upsert, mult)
criteria:需要更新的条件表达式
objNew:更新表达式
upsert:如FI标记录不存在,是否插入新文档。
multi:是否更新多个文档。
Reomve删除
db.表.remove(id) 移除对应id
db.表.remove({}) 移除所有
aggregate聚合
db.article.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
类似sql中select by_user, count(*) from article group by by_user
索引
db.表.createIndex({"name":1}