MongoDB

Author Avatar
kevin
发表:2024-03-23 14:13:00
修改:2024-10-09 14:13:02

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术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins不支持表连接表连接
primary keyprimary keyMongo自动将_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("张三");
评论