dokcer-mongodb

1.mongoDb的版本是5.0

2.拉取镜像

  docker pull mongo:5.0

3.运行镜像

  3.1. docker run -d -p 27017:27017 -v /home/mongo/data:/data/db -v /home/mongo/configdb:/data/configdb --name mongodb mongo:5.0 --auth

  3.2 .

    在上面的命令中,几个命令参数的详细解释如下:
    -p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务
    -v 为设置容器的挂载目录,这里是将本机的“/home/mongo/data"目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
    --name 设置该容器的名称
    -d 设置容器以守护进程方式运行
    --auth:需要密码才能访问容器服务 默认是没有账号秘密的
4.查看容器运行情况
  docker ps
 
5.进入容器设置用户
  5.1 进入mongo 容器
    docker exec -it 容器id ([/bin/bash]/[bash]) 
  5.2 使用mongo 命令  mongo
  5.3 进入admin 数据库 并创建 超级管理员
     use admin
     db.createUser( { user: "admin", pwd: "tsbx8888", roles: [ { role: "root", db: "admin" } ] } )
  5.4 使用超级管理员登录admin数据库
    db.auth('admin','tsbx8888')
  5.5 查看所有的数据库
    show dbs
  5.6 查看当前库下所有的用户
    show users
 
  5.7 创建项目库 
    use mesDb
  5.8 创建该库下具有读写权限的用户
     db.createUser( { user: "mesAdmin", pwd: "tsbx8888", roles: [ { role: "dbAdmin", db: "mesDb" } ] } )
  5.9 登录通过账号mesAdmin登录 mesDb
    db.auth('mesAdmin','tsbx8888')
 
  5.10 在mesDb数据库中写一条数据

     db.info.save({name: 'test', age: '22'})

  5.11 查询mesDb数据库查询

    db.info.find();

 
-----删除操作
  

  5.12. 删除库

    登录当前库  use xxdb

    删除 : db.dropDatabase()

 

  5.13.删除用户    

      db.system.users.remove({user:"user"})

      db.system.users.find()

 

  5.14.修改用户权限

    db.grantRolesToUser("mesAdmin", [{role:"root", db:"mesDb"}])   # 修改权限

 

  5.7 show collections:显示当前数据库中的集合(类似关系数据库中的表) 

 
  5.8.mongodb 不允许一次会话认证多个用户,退出当前shell窗口,或者新建shell窗口,重新 auth 认证登录 

logical sessions can't have multiple authenticated users

 
6.开启远程调用
  6.1 修改 mongo 配置文件容器内  /etc/mongod.conf.orig
  6.2  启动的时候使用宿主主机路径挂载,所有只需要容器中的配置文件 复制到宿主机上修改
    docker cp e5b:/etc/mongod.conf.orig /home/mongo/configdb 
  6.3 修改将其中的 
  bindIp: 127.0.0.1
  注释掉# bindIp: 127.0.0.1
  或者改成bindIp: 0.0.0.0
  即可开启远程连接
 6.4 重启容器
    docker restart 容器id
  
7.navicat链接查看
  

 

 

参考链接 
https://www.cnblogs.com/panchanggui/p/12047579.html
https://www.cnblogs.com/peyshine/p/12876471.html
https://blog.csdn.net/a1120467800/article/details/109963413 数据库以及表的操作

https://blog.csdn.net/qq_32234547/article/details/110621529

 

8.SpringBoot整合MongoDB实现增删改查

9.springboot集成mongodb去掉_class字段

  9.1 springboot2.x 版本去掉_class的时候  报错 org.springframework.data.mongodb.MongoDbFactory已经过时了 

     9.2  解决办法  但现在需要把MongoDbFactory改为MongoDataBaseFactory

     

package com.ins.mesrabbitmq.common.mongo;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;

import org.springframework.data.mongodb.core.convert.*;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

/**
 * @program: mesadminserver
 * @description  去掉_class字段
 * @author: zhaoJs
 * @create: 2022-03-11 15:43
 **/
@Configuration
@Slf4j
public class MongoConfig {

    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory factory, MongoMappingContext context, BeanFactory beanFactory) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
        MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
        try {
            mappingConverter.setCustomConversions(beanFactory.getBean(CustomConversions.class));
        } catch (NoSuchBeanDefinitionException e) {
            // 忽略此异常
            // log.error("mongo配置出错:{}", ExceptionUtils.getStackTrace(e));
        }

        // Don't save _class to mongo
        mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));

        return mappingConverter;
    }
}

   9.3 或者修改配置

 

 

 

10.不要用字符串来存时间  字符串的时间无法进行正常的运算。正常的时间可以通过$year/$month/$day等运算符很方便地取出相应的部分,字符串的时间……

  取出时间的格式 转换 :没有什么特别方便的办法,只能逐条更新成正确的格式

11.使用注解@JsonFormat 对时间格式进行转换处理

  关于@JSONField和@JsonFormat的使用区别说明

       @JsonFormat与@DateTimeFormat注解的使用

  11.2 经测试  使用fastjson中的 @JSONFiled 实现了预期效果  

    import com.alibaba.fastjson.annotation.JSONField;
  @JSONField(format = "yyyy-MM-dd HH:mm:ss")
  private Date createdTime;
  System.out.println(JSONObject.toJSON(mesPage)); // 需要json转一下 如果直接输入实体类时间显示还是有问题  Wed May 18 14:41:01 CST 2022


  

  

12.Monodb日期存储差8小时分析与解决,同时引出时间分析

 

13.代码时间是东八区,mongo库的时间是-8的标准时间。由于mongo做了自动转换,东八区 --存减8 -->标准时间<--读+8--东八区

 

 

 14. Mongodb设置用户权限(整理版)

 

15.使用@id id 自动生成_id ,修改无效的问题, 查询条件id 改成数据库中的字段_id

16.springboot— MongoDb 排序查询

 

 

 17.时间排序查询

 18.模糊查询

 19.分页查询

   19.1 springboot整合mongodb复杂查询和分页查询

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
posted @ 2022-03-10 22:57  BBS_自律  阅读(75)  评论(0编辑  收藏  举报