• 99 # mongo 的基本安装和配置


    关系型数据库和非关系型数据库

    • MySQL Oracle SqlServer 用一种关系模型来组织数据的数据库(查询方便,不方便拓展)
    • nosql mongo redis memcached (不同于传统的关系数据库)

    mongo 特点

    • 分布式:文档类型,值就是传统对象类型 key=>value BSON,储存复杂结构的数据
    • 性能高:不需要通过 SQL 层来进行解析(分析的过程 操作的过程 浪费性能),数据之间没有耦合,可以方便拓展,不适合复杂查询

    mongo 的安装方式

    https://www.mongodb.com/try/download/community

    选择自己的版本
    在这里插入图片描述
    我参考的是这篇文章安装的:MongoDB下载安装教程

    启动 mongodb

    手动启动:自己启动服务端,并且指向路径储存的路径,然后启动客户端,需配置环境变量

    mongod --dbpath="D:\Program Files\MongoDB\Server\4.4\data"
    mongo
    
    • 1
    • 2

    或者启动 MongoDB,再双击 mongo.exe

    在这里插入图片描述

    可执行文件的路径

    "D:\Program Files\MongoDB\Server\4.4\bin\mongod.exe" --config "D:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg" --service
    
    • 1

    在这里插入图片描述
    cfg 配置文件 D:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg 如下:

    在这里插入图片描述
    在这里插入图片描述
    在浏览器访问:http://127.0.0.1:27017 出现如下页面证明 mongoDb 启动成功。

    在这里插入图片描述

    mongo 的语句

    显示所有的数据库(默认免密码)

    show dbs
    
    • 1

    在这里插入图片描述
    如果数据库不存在,则创建数据库,否则切换到指定数据库。

    use DATABASE_NAME
    
    • 1

    在这里插入图片描述
    如果要查看已有集合,可以使用下面两个命令:

    show collections
    show tables
    
    • 1
    • 2

    在这里插入图片描述
    我们创建数据库kaimo,往集合 kaimo 里插入两条数据

    use kaimo
    db.kaimo.insertOne({"name":"凯小默1"})
    db.kaimo.insertOne({"name":"凯小默2"})
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    查询

    db.kaimo.find({})
    db.kaimo.find({"name": "凯小默1"})
    
    • 1
    • 2

    在这里插入图片描述

    删除

    db.kaimo.deleteOne({"name": "凯小默2"})
    
    • 1

    在这里插入图片描述

    下面创建根用户,在创建一个数据库分配这个数据库的权限,默认可以在 admin 中创建根用户,创建其他数据库,在针对某个数据库中,创建用户,赋予当前权限,下次链接这个数据库时可以登录这个账号。

    use admin
    db.createUser({user: "root", pwd: "root", roles: ["root"]})
    
    • 1
    • 2

    在这里插入图片描述
    创建一个 user 库,给集合 student 添加两条数据

    use user
    db.student.insert({name:"凯小默", age: 313})
    db.student.insert({name:"凯小默2", age: 3})
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    ObjectId 的构成

    ObjectId 是一个 12 字节的 BSON 类型字符串,按照字节顺序,依次代表:

    • 4 字节:UNIX 时间戳
    • 3 字节:表示运行 MongoDB 的机器
    • 2 字节:表示生成此 _id 的进程
    • 3 字节:由一个随机数开始的计数器生成的值
    ObjectId("65279b292d3834025d88a1b9")
    
    • 1

    MongoDB 开启安全认证,首先使用配置文件,增加参数:

    security:
      authorization: enabled
    
    • 1
    • 2

    在这里插入图片描述
    在重新启动,执行 show dbs 发现看不到数据库了

    在这里插入图片描述
    以用户管理员身份进行连接和验证

    use admin
    db.auth("root", "root")
    show dbs
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    再创建一个用户 kaimo313 去管理用户表,可读可写

    use user
    db.createUser({user: "kaimo313", pwd: "kaimo313", roles: [{role: "readWrite", db: "user"}]})
    
    • 1
    • 2

    在这里插入图片描述
    重启服务,访问 user 库里的所有集合,会提示:Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus

    use user
    show collections
    
    • 1
    • 2

    在这里插入图片描述

    上面的原因是因为连着的 MongoDB 中的 user 数据库它是有用户名和密码的,在没有进行登录的情况下,想直接查看数据库集合名称时,遭到了拒绝,因此,首先要进行登录操作,获得查看 collections 的权限。

    db.auth("kaimo313", "kaimo313")
    show collections
    
    • 1
    • 2

    在这里插入图片描述

    mysqlmongo
    集合
    行和列BSON

    Robo 3T

    Robo 3T:MongoDB 可视化工具

    Robo 3T v1.4.3下载地址

    我参考的是这篇:【Robo 3T】MongoDB可视化工具-- Robo 3T使用教程

    点击【Create】,选择【Connection】输入需要连接的服务端【地址】和【端口】

    在这里插入图片描述
    配置权限
    在这里插入图片描述
    双击或者链接
    在这里插入图片描述
    在这里插入图片描述
    配置user表权限
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    form表单的三种封装方法(Vue+ElementUI)
    Web前端开发技术课程大作业——南京旅游景点介绍网页代码html+css+javascript
    Compose UI 之 Buttons 按钮 & IconButtons 图标按钮
    从有序顺序表中删除所有值重复的元素,使表中所有元素的值均不同
    支持向量机SVM:从数学原理到实际应用
    kafka笔记(二):生产者-同步发送/异步发送/生产者分区/数据可靠性/数据去重/消息发送流程
    对于程序员来说,怎样才算是在写有“技术含量”的代码?
    Grafana安装后web打开报错
    你所不知道的端口耗尽(二)
    AHU 汇编 实验二
  • 原文地址:https://blog.csdn.net/kaimo313/article/details/133777667