no22-mongodb学习

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: springboot 专栏: springboot学习 标签: MongoDB

2023-04-24 14:51:27 858浏览

MongoDB学习

简单介绍

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框架

好博客就要一起分享哦!分享海报

此处可发布评论

评论(1展开评论

蓝色妖姬 能力:10

2023-04-27 09:13:11

学习中
点击查看更多评论

展开评论

您可能感兴趣的博客

客服QQ 1913284695