MongoDB
MongoDB
是一个基于分布式文件存储的开源数据库系统,可扩展的高性能数据存储解决方案
区分大小写
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组
为什么使用NoSQL :
1、对数据库高并发读写。
2、对海量数据的高效率存储和访问。
3、对数据库的高可扩展性和高可用性。
弱点:
1、数据库事务一致性需求
2、数据库的写实时性和读实时性需求
3、对复杂的SQL查询,特别是多表关联查询的需求
MongoDB安装
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
使用MongoDB客户端进行操作
mongo //进入mongo客户端
#查询所有的数据库
show dbs
概念
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 不支持表连接 | 表连接 |
primary key | primary key | Mongo自动将_id设置主键 |
数据库
一个mongodb中可以建立多个数据库
切换/创建数据库
use test
如果数据库不存在,则创建数据库,否则切换到指定数据库
集合
常用命令:
1、 创建一个集合(table)
db.createCollection( "user");
2、 得到指定名称的集合(table )
db.getCollection("user");
数据类型
数据类型 | 描述 |
---|---|
String | 字符串。存储数据常用的数据类型 |
Integer | 整型数值。用于存储数值 |
Boolean | 布尔值。用于存储布尔值(真/假) |
Double | 双精度浮点值。用于存储浮点值 |
Arrays | 数组或列表或多个值存储为一个键 |
Object | 用于内嵌文档 |
常用命令
INSERT 插入数据
db.User.save({name:'zhangsan',age:21,sex:true})
QUERY 查询数据
字段查询
# select * from User where name = 'lucy'
db.User.find({name:"lucy"})
显示某些字段
# select name, age from User where age = 20
db.User.find({age:20}, {'name':1, 'age':1})
排序
# select * from User order by age
db.User.find().sort({age:1})
分页
# select * from User skip 2 limit 3
db.User.find().skip(0).limit(3)
in
# select * from User where age in (21, 26, 32)
db.User.find({age:{$in:[21,26,32]}})
条件查询,先把查询条件写前面
# select count(*) from User where age >20
db.User.find({age:{$gt:20}}).count()
or
# select * from User where age = 20 or age = 30
db.User.find({$or:[{age:20}, {age:30}]})
update更新数据
更新,查询条件放前面
# update Userset age = 100, sex = 0 where name = 'lucy'
db.User.update({name:"lucy"}, {$set:{age:100, sex:0}})
Remove删除
db.User.remove(id)
删除所有
db.User.remove({})
SpringBoo集成
依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
配置文件
spring.data.mongodb.uri=mongodb://192.168.44.165:27017/test
Repository
我们只需要继承MongoRepository类,按照Spring Data规范就可以了
1、不是随便声明的,而需要符合一定的规范
2、 查询方法以find | read | get开头
3、 涉及条件查询时,条件的属性用条件关键字连接
4、 要注意的是:条件属性首字母需要大写
5、 支持属性的级联查询,但若当前类有符合条件的属性则优先使用,而不使用级联属性,若需要使用级联属性,则属性之间使用_强制进行连接
驼峰命名,字段必须和实体类对应
自定义接口
@Repository
public interface UserRepository extends MongoRepository<User, String> {
List<User> findByName(String name);
List<User> findByNameLike(String name);
}
举例
自定义搭配
findByNameLike("张");
findByName("张三");