广告
返回顶部
首页 > 资讯 > 精选 >docker安装mongoDB及使用方法是什么
  • 402
分享到

docker安装mongoDB及使用方法是什么

2023-07-05 13:07:33 402人浏览 独家记忆
摘要

这篇文章主要介绍“Docker安装mongoDB及使用方法是什么”,在日常操作中,相信很多人在docker安装mongoDB及使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”docker安装mon

这篇文章主要介绍“Docker安装mongoDB及使用方法是什么”,在日常操作中,相信很多人在docker安装mongoDB及使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”docker安装monGoDB及使用方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、mongoDB是什么?

    MongoDB是一个NoSQL的非关系型数据库 ,支持海量数据存储,高性能的读写。

    1. mongo的体系结构

    docker安装mongoDB及使用方法是什么

    • mongo中的集合相当于mysql中表的概念;

    • mongo中的文档相当于Mysql中行的概念;

    • mongo中的域相当于mysql中字段/列的概念;

    2. mongoDB的特点(或使用场景)

    • 支持存储海量数据;(例如:直播中的打赏数据);

    • 支持频繁的数据读写;(例如:游戏道具);

    • 数据安全性不高,存在数据误差(丢失数据);

    • mongoDB不支持多表操作,不支持事务

    • mongoDB使用Bson存储格式,支持动态字段管理;

    3. mongoDB与mysqlredis对比

    与redis对比

    Redis纯内存数据库,内存不足时触发淘汰策略,mongoDB使用内存加磁盘的存储策略具有高扩展性;

    mongoDB使用Bson存储格式,支持动态字段管理方便扩展;

    与mysql对比

    mongoDB不支持多表操作,不支持事务;

    mongoDB使用Bson存储格式,支持动态字段管理;

    查询效率对比

    Redis > MongoDB > MySQL

    4. mongoDB存储原理

    docker安装mongoDB及使用方法是什么

    1. mongoDb采用内存加磁盘的方式存储数据;

    2. mongoDb支持数据分片,当单一的服务器中磁盘不够用的时候,还可以串联其他服务器

    3. 客户端的请求到达内存时,先在日志中记录下操作记录,然后再去操作内存;

    4. 内存中的日志每10ms向磁盘中的日志进行同步一次,数据则每分钟同步一次;

    5. 客户端先去内存中查询数据,内存中没有再去查询磁盘;

    6. 当客户端写入的时候,会先写入到内存中,内存中写入后请求直接返回,内存中的数据会根据同步策略同步到磁盘;

    7. 如果机器宕机,在重启服务的时候会解析磁盘中的日志和磁盘中的数据进行对比,将未入到磁盘中的数据写入磁盘,但可能会丢失10ms的数据;

    二、使用docker安装mongo

    1.安装

    拉取mongo镜像

     docker pull mongo:4.4

    创建mongo数据持久化目录

    mkdir -p /docker_volume/mongodb/data

    运行容器

    docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth
    -v: 将宿主机的/docker_volume/mongodb/data映射到容器的/data/db目录,将数据持久化到宿主机,以防止删除容器后,容器内的数据丢失
    –auth:需要密码才能访问容器服务

    2.创建用户

    登录mongo容器,并进入到【admin】数据库

    docker exec -it mongo mongo admin

    创建一个用户,mongo 默认没有用户

    db.createUser({<!--{C}%3C!%2D%2D%20%2D%2D%3E--> user:'root',pwd:'123456',roles:[ {<!--{C}%3C!%2D%2D%20%2D%2D%3E--> role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});

    【user:&lsquo;root&rsquo; 】:设置用户名为root
    【pwd:&lsquo;123456&rsquo;】:设置密码为123456
    【role:&lsquo;userAdminAnyDatabase&rsquo;】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    【db: &lsquo;admin&rsquo;】:可操作的数据库
    【&lsquo;readWriteAnyDatabase&rsquo;】:赋予用户读写权限

    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

    3. 连接、测试

    连接mongo数据库

    db.auth('root', '123456')

    测试数据库,插入一条语句

    db.user.insert({<!--{C}%3C!%2D%2D%20%2D%2D%3E-->"name":"zhangsan","age":18})

    测试数据库,查询刚才插入的语句

    db.user.find()

    docker安装mongoDB及使用方法是什么

    navicat连接测试

    docker安装mongoDB及使用方法是什么

    三、SpringBoot整合mongoDB

    导入坐标

            <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-mongodb</artifactId>             <version>2.3.9.RELEASE</version>        </dependency>

    添加yml配置

    spring:  data:    mongodb:      uri: mongodb://192.156.136.168:27017/testdb      username: root      passWord: 123456

    编写实体类

    import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.bson.types.ObjectId;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.mapping.Document;import org.springframework.data.mongodb.core.mapping.Field;@Data@AllArgsConstructor@NoArgsConstructor//指定实体类和数据库文档的映射关系    默认实体类名  数据库如果没有该文档,会自动创建@Document(value="tb_person")public class Person {    @Id    private ObjectId id; //mongoDB推荐使用ID    //指定属性名和数据库域的映射关系   默认属性名    @Field("person_name")    private String name;    private int age;    private String address;}

    @Document(value=“tb_person”) :指定实体类和数据库文档的映射关系 默认实体类名 数据库如果没有该文档,会自动创建
    2. @Field(“person_name”): //指定属性名和数据库域的映射关系 默认属性名

    测试类

    import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.domain.Sort;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.data.mongodb.core.query.Update;import org.springframework.test.context.junit4.SpringRunner;          @Test    public void find() {        //设置查询条件 age小于30,且person_name="张三"        Criteria criteria = Criteria.where("age").lt(30)                .and("person_name").is("张三");                //设置查询条件        Query query = new Query(criteria);        //查询        List<Person> list = mongoTemplate.find(query, Person.class);        for (Person person : list) {            System.out.println(person);        }    }        @Test    public void findPage() {        //设置查询条件 age小于30,且person_name="张三"        Criteria criteria = Criteria.where("age").lt(30)                .and("person_name").is("张三");        //根据条件 查询总数        Query queryCount = new Query(criteria);        long count = mongoTemplate.count(queryCount, Person.class);        //查询当前页的数据列表, 查询第二页,每页查询2条        Query queryLimit = new Query(criteria)                .with(Sort.by(Sort.Order.desc("age")))                .limit(2)//每页查询条数                .skip(2); //从第几页开始 (page-1)*size        List<Person> list = mongoTemplate.find(queryLimit, Person.class);        for (Person person : list) {            System.out.println(person);        }    }            @Test    public void update() {        //设置查询条件 age小于30,且person_name="张三"        Criteria criteria = Criteria.where("person_name").is("王五");        //设置更新条件        Query query = new Query(criteria);        //设置更新数据        Update update = new Update();        update.set("age", 16);        mongoTemplate.upsert(query, update, Person.class);    }        @Test    public void save() {        Person person = new Person();        person.setName("张三");        person.setAge(18);        mongoTemplate.save(person);    }            @Test    public void dlete() {        mongoTemplate.remove(Query.query(Criteria.where("person_name").is("张三")), Person.class);    }

    mongoDB索引

    提示:1 :升序索引 -1 :降序索引

    #查看索引db.user.getIndexes()#创建索引#db.user.createIndex({'age':1})

    四、mongoDB原生使用

    新增

    db.tb_person.insert({person_name: "陈六", age: 16})

    修改

    -- 普通修改db.tb_person.update({age: 16}, {$set: {person_name: "张三"}})

    修改格式:db.collection.update(query, update, [ upsert: boolean, multi: boolean, writeConcern: document])

    db.tb_person.update({age: 16}, {$set: {person_name: "张三"}}, {upsert: true, multi: true})--  upsert (默认false ) : 可选,如果不存在update的记录,是否保存。true为保存。--  multi(默认false ) : 可选,默认只更新第一条记录。true:更新所有匹配数据--  writeConcern :可选,抛出异常的级别

    删除

    -- 普通删除db.tb_person.remove({person_name: "张三"})

    删除格式:db.collection.remove(query, update, [ justOne: boolean, writeConcern: document])

    db.tb_person.remove({person_name: "张三"}, false)-- justOne: (可选)true:删除第一个匹配记录,false:删除所有-- writeConcern :(可选)抛出异常的级别

    查询

    --  查询person_name=张三 或者 年龄 18db.tb_person.find({$or:[{person_name: "张三"},{age:18 }]}) -- 分页查询  以年龄升序排序 跳过第1条数据,查询后面2条数据db.tb_person.find().sort({age:1}).limit(2).skip(1)  -- 查询年龄小于等于21的数据,以年龄降序排序db.tb_person.find({age:{$lte:21}}).sort({age:-1})

    常用查询条件

    中文符号
    小于$lt:
    大于$gt:
    小于或等于$lte:
    大于或等于$gte:
    不等于$ne:

    到此,关于“docker安装mongoDB及使用方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: docker安装mongoDB及使用方法是什么

    本文链接: https://www.lsjlt.com/news/351871.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • docker安装mongoDB及使用方法是什么
      这篇文章主要介绍“docker安装mongoDB及使用方法是什么”,在日常操作中,相信很多人在docker安装mongoDB及使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”docker安装mon...
      99+
      2023-07-05
    • docker安装mongoDB及使用方法详解
      目录一、MongoDB是什么?1. mongo的体系结构2. mongoDB的特点(或使用场景)3. mongoDB与mysql、Redis对比4. mongoDB存储原理二、使用docker安装mongo1.安装2.创...
      99+
      2023-03-19
      docker安装mongodb docker安装mongo
    • 详解linux 使用docker安装mongodb方法
      1、xshell远程到一台安装了docker和docker-conpose的服务器(安装方法见其他学习文件) 2、到home目录下新建Mongotest文件夹,进入这个文件夹,执行vi docker-compose....
      99+
      2022-06-03
      docker安装mongodb linux docker安装mongodb
    • docker lnmp安装及部署的方法是什么
      安装和部署 Docker 上的 LNMP(Linux、Nginx、MySQL、PHP)环境可以按照以下步骤进行:1. 安装 Dock...
      99+
      2023-10-10
      docker LNMP
    • Linux安装使用docker的方法是什么
      这篇文章主要讲解了“Linux安装使用docker的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux安装使用docker的方法是什么”吧!一.安装dockerDocker要...
      99+
      2023-06-22
    • MinIO存储在docker中安装及使用的方法是什么
      本篇内容主要讲解“MinIO存储在docker中安装及使用的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MinIO存储在docker中安装及使用的方法是什么”吧!MinIO存储在do...
      99+
      2023-07-05
    • CentOS 8安装Docker方法是什么
      本篇内容主要讲解“CentOS 8安装Docker方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CentOS 8安装Docker方法是什么”吧!1、御载以前的版本y...
      99+
      2023-06-22
    • Docker compose安装的方法是什么
      这篇文章主要介绍了Docker compose安装的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker compose安装的方法是什么文章都会有所收获,下面我们一起来看看吧。docker co...
      99+
      2023-07-05
    • docker安装mysql的方法是什么
      今天小编给大家分享一下docker安装mysql的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。快速完成直接复制粘...
      99+
      2023-07-05
    • Docker安装Nginx的方法是什么
      这篇文章给大家介绍Docker安装Nginx的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。方法一、通过 Dockerfile构建创建Dockerfile首先,创建目录nginx,用于存放后面的相关东西。[r...
      99+
      2023-06-06
    • kafka安装及使用的方法是什么
      Kafka是一个分布式流处理平台,用于发布和订阅流数据,它具有高吞吐量、可扩展性和容错性等特点。下面是Kafka的安装和使用方法:安...
      99+
      2023-10-08
      kafka
    • intouch安装及使用的方法是什么
      要安装和使用InTouch,您需要按照以下步骤进行操作:1. 下载InTouch软件:您可以从Wonderware官方网站或其他可信...
      99+
      2023-09-21
      intouch
    • SVN安装及使用的方法是什么
      SVN(Subversion)是一种版本控制系统,用于管理文件和目录的更改。下面是安装和使用SVN的一般步骤:安装SVN:1. 下载...
      99+
      2023-08-15
      SVN
    • zencart安装及使用的方法是什么
      以下是Zencart安装及使用的方法:1. 下载Zencart软件包并解压缩。2. 将解压缩后的文件上传到您的网站根目录或子目录中。...
      99+
      2023-06-03
      zencart安装
    • Docker安装MongoDB并使用Navicat连接的操作方法
      目录MongoDB简介:查看可用的MongoDB版本:拉取最新版本的MongoDB镜像:验证MongoDB镜像是否成功拉取到本地:参数说明:解决无法正常执行mongo命令问题添加MongoDB连接用户和密码:1、进入创建...
      99+
      2022-10-17
    • ubuntu中安装docker的方法是什么
      这篇文章主要介绍“ubuntu中安装docker的方法是什么”,在日常操作中,相信很多人在ubuntu中安装docker的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ubuntu中安装docker...
      99+
      2023-07-04
    • Ubuntu上安装Docker的方法是什么
      今天小编给大家分享一下Ubuntu上安装Docker的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,更新软件...
      99+
      2023-07-04
    • Docker与FastDFS安装命令及使用的方法
      这篇“Docker与FastDFS安装命令及使用的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来...
      99+
      2022-10-19
    • ubuntu docker安装部署的方法是什么
      要在Ubuntu上安装和部署Docker,可以按照以下步骤进行操作:1. 更新系统:运行以下命令来更新系统软件包列表和已安装的软件包...
      99+
      2023-09-18
      ubuntu docker
    • linux离线安装docker的方法是什么
      要在Linux上离线安装Docker,可以按照以下步骤进行操作: 找到适用于你的Linux发行版的Docker安装包,并将其下载...
      99+
      2023-10-23
      docker linux
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作