no22-mongodb学习
分类: springboot 专栏: springboot学习 标签: MongoDB
2023-04-24 14:51:27 858浏览
简单介绍
MongoDB是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库。
MongoDB是一个介于关系数据库和非关系数据库之间的产品。
他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
应用场景
总结:
核心概念
关系总结
安装并启动连接
docker pull mongo:4.4 docker run -d --name mongo -p 27017:27017 镜像id #进入容器 docker exec -it 容器id bash #通过客户端命令连上mongo mongo --host=127.0.0.1 --port=27017
补充:带密码启动
docker run -itd --name mongo -p 27017:27017 dfda7a2cf273 --auth #用以下命令添加用户和设置密码,并且尝试连接 docker exec -it mongo mongo admin #创建一个名为 admin,密码为 123456 的用户 db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); #尝试使用上面创建的用户信息进行连接 db.auth('admin', '123456')
常用命令
查看版本
db.version()
查看所有数据库
show dbs 或者 show databases
查看当前的数据库
db
创建或切换数据库
use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库
删除数据库
use test1 db.dropDatabase()
查看集合
show tables 或者 show collections 命令
新增
db.集合名称.insert/save/insertOne(文档)
db.book.save({id:1,name:"三国演义",author:"罗贯中"})
db.book.save({id:2,name:"红楼梦",author:"曹雪芹",age:90})
查询
db.book.find()
db.book.find({id:1})
db.book.find({name:"三国演义"})
复杂点的查询
修改
db.集合名称.update(条件,{操作种类:{文档}})
db.book.update({id:1}, {$set:{name:"三国演义2"}})
删除集合
删除记录
db.集合名称.remove(条件)
db.book.remove({age:90})
java操作MongoDB
依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>
配置
spring.data.mongodb.uri=mongodb://192.168.56.16/mongodb_study #数据库名
补充:配置了MongoDB账号密码的情况
spring.data.mongodb.host=192.168.56.16 spring.data.mongodb.database=mongodb_study spring.data.mongodb.username=admin spring.data.mongodb.password=123456 spring.data.mongodb.port=27017
java实体类
注意
默认主键名是 id,没有赋值的情况下,id要定义成string类型,否则报错,如果是long int类型,要自己显式赋值 主键字段不是id时 如果不加@Id注解,默认生成string id填充到 _id中, 加@Id注解,生成string id填充到 bid中 自己赋值则用自己的,mongo不再自动生成
测试crud
@SpringBootTest class MongoApplicationTests { @Resource MongoTemplate mongoTemplate; @Test void testAdd() { Book book = new Book(); book.setBid("3"); book.setName("西游记"); book.setAuthor("吴承恩"); Book bookRet = mongoTemplate.insert(book); System.out.println("bookRet = " + bookRet); } @Test void get() { Book book = mongoTemplate.findById("1", Book.class); System.out.println("book = " + book); } @Test void findAll() { List<Book> bookList = mongoTemplate.findAll(Book.class); bookList.forEach(System.out::println); } @Test void testUpdate() { Query query = new Query(Criteria.where("_id").is("3")); Update update = Update.update("name","西游记222").set("author","吴承恩222"); UpdateResult updateResult = mongoTemplate.updateFirst(query, update, Book.class); System.out.println("updateResult.getModifiedCount() = " + updateResult.getModifiedCount()); } @Test void delete() { Book book = new Book(); book.setBid("1"); DeleteResult result = mongoTemplate.remove(book); System.out.println("result.getDeletedCount() = " + result.getDeletedCount()); } }
提一下bugumongo框架
好博客就要一起分享哦!分享海报
您可能感兴趣的博客