MongoDB 基础概念

  1. db:和 mysql 的概念一致
  2. collection:集合,类似于 mysql 中的表
  3. document:每个集合中的文档,类似于 mysql 中的记录
    • Primary Key:和 mysql 中的主键含义一致,每个 document 都有一个主键
    • field:文档中的字段

数据库 db

  1. MongoDB 中默认的数据库为 test ,如果没有创建新的数据库,集合将存放在 test 数据库中;

  2. 有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库:

    • admin:从权限的角度来看,这是 root 数据库,要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器;
    • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合;
    • config:当 Mongo 用于分片设置时,config 数据库在内部使用,用于保存分片的相关信息;

数据库名称的规则

  1. 不区分大小写,但是建议全部小写;不能包含空字符;数据库名称不能为空,并且必须少于 64 个字符;

  2. Windows 上的命名限制:不能包括 /\. "$*<>:|? 中的任何内容;

  3. UnixLinux 上的命名限制:不能包括 /\. "$ 中的任何字符;

删除数据库

  1. 使用 use 命令切换到要删除的数据库;

  2. 使用 db.dropDatabase() 删除当前数据库;

集合 collection

集合名称的规则

  1. 集合名称应以下划线或字母字符开头;

  2. 不能包含 $;不能为空字符串;不能包含空字符;不能以 . 开头;

  3. 长度限制;

    • 版本 4.2 最大 120 个字节;
    • 版本 4.4 最大 255 个字节;

查看集合

show collections

删除集合

db.集合名称.drop()

文档 document

  1. MongoDB 将数据记录存储为 BSON 文档,是 JSON 文档的二进制表示形式,它比 JSON 包含更多的数据类型;

  2. BSON 规范

  3. BSON 支持的数据类型

文档结构

  1. MongoDB 文档由字段和值对组成,并具有以下结构

    {
      field1: value1,
      field2: value2,
      field3: value3,
      ...
      fieldN: valueN
    }
    
  2. 文档与文档之间的数据结构可以不同

字段名称有以下限制

  1. 字段名称 _id 保留用作主键;它的值在集合中必须是唯一的,不可变的,并且可以是数组以外的任何类型;

  2. 字段名称不能包含空字符;顶级字段名称不能以美元符号 $ 开头;

  3. MongoDB 3.6 开始,服务器允许存储包含点 . 和美元符号 $ 的字段名称;

MongoDB 中的数据类型

  1. 字段的值可以是任何 BSON 数据类型,包括其他文档,数组和文档数组。例如,以下文档包含各种类型的值:

    var mydoc = {
      // _id 保存一个 ObjectId 类型
      _id: ObjectId("5099803df3f4948bd2f98391"),
    
      // name 包含一个嵌入式文档,该文档包含 first 和 last 字段
      name: {
        first: "Alan",
        last: "Turing"
      },
    
      // birth 和 death 持有 Date 类型的值
      birth: new Date('Jun 23, 1912'),
      death: new Date('Jun 07, 1954'),
    
      // contribs 保存一个字符串数组
      contribs: ["Turing machine", "Turing test", "Turingery"],
    
      // views 拥有 NumberLong 类型的值
      views: NumberLong(1250000)
    }
    
  2. 下面是 MongoDB 支持的常用数据类型:

    类型 整数标识符 字符串标识符 描述
    Double 1 double 双精度浮点值,用于存储浮点值;
    String 2 string UTF-8 编码的字符串,存储数据常用的数据类型;
    Object 3 object 用于内嵌文档;
    Array 4 array 用于将数组或列表或多个值存储为一个键;
    Binary data 5 binData 二进制数据,用于存储二进制数据;
    ObjectId 7 objectId 对象 ID,用于创建文档的 ID;
    Boolean 8 bool 布尔值,用于存储布尔值(真/假);
    Date 9 date 日期时间,用 UNIX 时间格式来存储当前日期或时间;
    Null 10 null 用于创建空值;
    Regular Expression 11 regex 正则表达式类型,用于存储正则表达式;
    32-bit integer 16 int 整型数值,用于存储 32 位整型数值;
    Timestamp 17 timestamp 时间戳,记录文档修改或添加的具体时间;
    64-bit integer 18 long 整型数值,用于存储 64 位整型数值;
    Decimal128 19 decimal 数值类型,常用于存储更精确的数字,例如货币;

_id 字段

  1. MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id 字段作为主键,如果插入的文档省略 _id 字段,则 MongoDB 驱动程序会自动为 _id 字段生成 ObjectId

  2. _id 字段具有以下行为和约束:

    • 默认情况下 MongoDB 在创建集合时会在 _id 字段上创建唯一索引;
    • _id 字段始终是文档中的第一个字段;
    • _id 字段可以包含任何 BSON 数据类型的值,除了数组;

MongoDB 的特点

  1. mongodb 属于 nosql 中的文档型数据库,每个文档相当于是一个对象,它没有列的概念,也没有表关系

  2. 由于它是一个 nosql 数据库:

    • sql 语句
    • 使用极其简单,学习成本非常低
    • 由于没有集合之间的关联,难以表达复杂的数据关系
    • 存取速度极快
  3. 由于它是一个 文档型 数据库:

    • 数据内容非常丰富和灵活
    • 对数据结构难以进行有效的限制

MongoDB 适用于哪些场景?

  1. 需要处理大量的低价值数据,且对数据处理性能有较高要求:比如,对微博数据的处理就不需要太高的事务性,但是对数据的存取性能有很高的要求,这时就非常适合使用 MongoDB

  2. 需要借助缓存层来处理数据:因为 MongoDB 能高效的处理数据,所以非常适合作为缓存层来使用,将 MongoDB 作为持久化缓存层,可以避免底层存储的资源过载;

  3. 需要高度的伸缩性:对关系型数据库而言,当表的大小达到一定数量级后,其性能会急剧下降,这时可以使用多台 MongoDB 服务器搭建一个集群环境,实现最大程度的扩展,且不影响性能;

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. MongoDB 基础概念
  2. 2. 数据库 db
    1. 2.1. 数据库名称的规则
    2. 2.2. 删除数据库
  3. 3. 集合 collection
    1. 3.1. 集合名称的规则
    2. 3.2. 查看集合
    3. 3.3. 删除集合
  4. 4. 文档 document
    1. 4.1. 文档结构
    2. 4.2. 字段名称有以下限制
    3. 4.3. MongoDB 中的数据类型
    4. 4.4. _id 字段
  5. 5. MongoDB 的特点
  6. 6. MongoDB 适用于哪些场景?