mongodb笔记

MongoDB是一个高性能、开源、无模式的文档型数据库,适合数据量大、读操作频繁但修改操作不频繁的场景,如社交、游戏、物流和物联网等。文章介绍了MongoDB的主要功能特性,如BSON存储、动态查询和高扩展性,以及其在Docker中的安装和配置方法,包括数据持久化和用户授权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.啥是mongodb

1.1 简介

MongDB是一个高性能,开源,无模式的文档型NosQL数据库,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等

主要功能特性:

  1. 文件存储格式BSON(一种json的扩展)
  2. 数据格式不受限了表的结构
  3. 支持动态查询
  4. 支持完全索引
  5. 支持复制(其主从复制)和故障恢复
  6. 使用高效的二进制数据存储,包括大型对象
  7. 自动处理碎片,支持扩展。
  8. 支持各种主流编程语言
  9. 内部支持Javascript

1.2 优势

  1. 查询速度快
  2. 高并发,高容量
  3. 高效存储和访问
  4. 高扩展性和高可用性
  5. 数据结构灵活,满足多种场景的数据

1.3 缺点

  1. 实现复杂的查询场景比较困难 (联表查询简直逆天的复杂…)
  2. 修改操作比较慢

1.4 使用场景

  1. 数据量大
  2. 读操作频繁, 但是修改操作不频繁
  3. 记录类数据,价值较低
  4. 对事务性要求不高

1.5 具体的应用场景如:

  1. 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
  2. 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
  3. 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来.
  4. 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
  5. 视频直播,使用 MongoDB 存储用户信息、点赞互动信息等。

1.6 基本概念

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.7 mongoDB存储

在这里插入图片描述


2. docker安装和启动 mongodb

  1. 拉取 mongodb 镜像 :

    docker pull mongo:4.4
    
  2. 在本地创建存储容器数据的目录,比如我的电脑是这样的 :

    mkdir -p /Users/afafa/Downloads/docker_about/mongodb/data
    
  3. 运行容器 :

    docker run -itd --name mongo -v /Users/afafa/Downloads/docker_about/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth
    

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

  4. docker ps 查看容器是否运行成功

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

    docker exec -it mongo mongo admin
    
  6. 创建一个用户,mongo 默认没有用户 :

    db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
    

    【user:‘root’ 】:设置用户名为root
    【pwd:‘123456’】:设置密码为123456
    【role:‘userAdminAnyDatabase’】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    【db: ‘admin’】:可操作的数据库
    【‘readWriteAnyDatabase’】:赋予用户读写权限
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

  7. 连接mongo数据库

    db.auth('root', '123456')
    
  8. 插入一条语句

     db.user.insert({"name":"zhangsan","age":18})
    
  9. 查询刚刚插入的

     db.user.find()
    

    不出意外的话,操作是这样的:
    在这里插入图片描述

navicat 连接 mongo

在这里插入图片描述


mongodb 基本操作命令

不写了,直接看大佬写的 : 传送门
或者看资料文档…

直接输入 db 可以查看当前在那个数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值