MongoDB学习笔记

概述

  • 三高需求:
    • High performance对数据高并发读写的要求
    • High Storage对海量数据的高效率存储和访问的需求
    • High Scalability/Availability对数据库的高扩展和高可用性的需求
  • 应用场景:
    • 社交场景
      • 存储用户信息,用户发表朋友圈信息,通过地理位置索引实现附近的人、地点等功能
    • 游戏场景
      • 存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问
    • 物流场景
      • 存储订单信息,订单状态在运送过程中会不断更新,以内嵌数组的形式来储存
    • 物联网场景
      • 接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
    • 视频直播
      • 存储用户信息,点赞互动信息等
  • 适合使用MongoDB共同特点:
    • 数据量大
    • 写入操作频繁
    • 价值较低的数据,对事务性要求不高
  • 什么时候选择?

请添加图片描述

  • 简介:
    • MongoDB是一个开源、高性能、无模式的文档型数据库,用于简化开发和方便拓展,是NoSQL数据库的一种
    • 支持的数据结构非常松散,叫BSON,既可以存储比较复杂的数据类型,又很灵活
    • 其记录是一个文档,是一个由字段和值对组成的数据结构
    • MongoDB文档类型类似于JSON对象,即一个文档就是一个对象
    • 字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档,普通数组和文档数组
  • 与MySQL的对比:

请添加图片描述

请添加图片描述

  • MongoDB的特点:
    • 高性能
    • 高可用性
    • 高扩展性
    • 丰富的查询支持

数据类型

请添加图片描述

基本操作

数据库

  • 操作:
    • 选择和创建数据库:use dbname(若不存在则自动创建)
    • 查看有权限查看的所有的数据库命令:show dbs
    • 查看当前正在使用的数据库命令:db
    • 删除数据库:db.dropDatabase()
  • 数据库命名规则:
    • 不能是空字符串
    • 不得含有‘ ’(空格)、.、$、/、\、\0
    • 应全部小写
    • 最多64字节
  • 特殊的数据库
    • admin
    • local
    • config

集合

  • 介绍:

    • 类似关系型数据库中的表
    • 可以显式创建,也可以隐式创建
  • 操作:

    • 集合的显式创建:db.createCollection(“name”)
    • 查看当前库中的表:show tables
    • 集合删除:db.name.drop()

文档

  • 单个文档插入

请添加图片描述

  • 批量插入

请添加图片描述

  • 单个查询

请添加图片描述

  • 查询所有

    • db.comment.find()
  • 按一定条件查询

    • db.comment.find({user:‘1003’})
  • 查询所有数据,只显示部分字段

    • db.comment.find({},{userid:1,nickname:1})
  • 文档更新

    • db.collection.update(query,update,options)
      • 覆盖修改:db.comment.update({_id:“1”},{likenum:NumberInt(1001)})
      • 局部修改:db.comment.update({_id:“1”},{$set:{likenum:NumberInt(1001)}})
  • 删除文档

    • db.name.remove(条件)
      • db.comment.remove({_id:“1”})
  • 文档的统计查询

    • 统计查询:db.collection.count(query,options)
    • 括号内不带条件查询所有
  • 文档的分页列表查询

请添加图片描述
请添加图片描述

  • 排序查询:

请添加图片描述

索引

介绍:

  • 支持在MongoDB中高效地执行查询
  • 索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分
  • 索引存储特定字段或一组字段的值,按字段值排序

索引类型:

  • 单字段索引:MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引

请添加图片描述

  • 复合索引

请添加图片描述

  • 地理空间索引:平面几何的二维索引和球面几何的二维球面索引
  • 文本索引:支持在集合中搜索字符串内容,这些文本索引不存储特定语言的停止词,而将集合中的词作为词干,只存储根词
  • 哈希索引:支持基于散列的分片,它对字段值的散列进行索引

索引操作:

  • 查看:db.collection.getIndexes

  • 创建:db.collection.createIndex(keys,options)

  • 移除:db.collection.dropIndex(index)

    • 移除所有:db.collection.dropIndexes
    • _id的字段的索引无法删除
  • 执行计划:db.collection.find(query,options).explain(options)

集群和安全

副本集-Replica Sets

  • 介绍:

    • 是一组维护相同数据集的mongod服务,可提供冗余和高可用性,是所有生产部署的基础
  • 两种类型:

    • 主节点:数据操作的主要连接点
    • 从节点:数据冗余备份节点,可以读或选举
  • 三种角色:

    • 主要成员Primary:接受所有写操作,就是主节点
    • 副本成员Replicate:从主节点通过复制操作以维护相同的数据集,及备份数据,不可写操作,但可以读操作
    • 仲裁者Arbiter:不保留任何数据的副本,只具有投票选举作用

分片集群-Sharded Cluster

  • 是什么:
    • 是一种跨多台机器分布数据的方法,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署
    • 分片是指将数据拆分,将其分散在不同的机器上的过程
  • 分片集群包含的组件:
    • 分片(存储):每个分片包含分片数据的子集,每个分片都可以部署为副本集
    • mongos(路由):mongos充当路由器,在客户端 应用程序和分片集群之间提供接口
    • config servers(调度的配置):配置服务器存储群集的元数据和配置设置

请添加图片描述

安全认证

用户和角色权限

  • 保证mongodb的安全步骤:

请添加图片描述

  • 相关步骤:

请添加图片描述

  • 角色命令:

请添加图片描述

副本集环境

1.生成一个key文件到当前文件夹中

2.分别编辑几个服务的mongod.conf

请添加图片描述

  • SpringDataMongoDB连接副本集

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值