MongoDB是一款非关系型数据库,说到非关系型数据库,区别于关系型数据库最显著的特征就是没有SQL语句,数据没有固定的数据类型

MongoDB是一个文档数据库,记录的是一个文档,它是由字段和值对组成的数据结构。文档存在于集合中

  • 文档是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行。
  • 集合可以被看做没有模式的表
  • 单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限
  • 自带简洁的JavaScript shell
  • 每个文档都有一个特殊的键 "_id",文档所处的集合里是唯一的

主要功能

  1. 高性能
    • 嵌入式数据模型的支持减少了数据库系统的I/O活动
    • 索引支持更快的查询,并且可以包含来自嵌入式文档的和数组的键
  2. 丰富的查询语言
  3. 高可用性(副本集)
    • 自动故障转移
    • 数据冗余
  4. 水平伸缩性(分片)
    • 在一组计算机集群分布数据
  5. 支持多种存储引擎

视图

MongoDB不会将视图内容持久化到磁盘上,不支持对视图的写入操作,只能进行读写操作。

上限集合

上限集合是固定大小的集合,它们支持高吞吐量操作,这些操作根据插入顺序插入和检索文档。一旦集合填充了其分配的空间,它就会通过覆盖集合中最旧的文档为新文档腾出空间。

文档

  • 文档中的键值对是有序的 {"a":1,"b":2}与{"b":2,"a":1}是不同的文档(不重要,_id是唯一)
  • 文档的值可以是字符串,也可以是其他类型,还可以是整个嵌入的文档
  • 键不能含有\0,这个字符串用于表示键的结尾
  • .和$有特别的意义,只有特定的环境才能使用
  • 以下划线_开头的键是保留的,这个不是很严格

集合

一组文档,类似于表

集合是无模式的,集合里面的文档可以是各式各样的。

  • 集合名不能是空字符串
  • 集合名不能有\0
  • 不能以system.开头
  • 不能含有保留字符$
  • 组织集合的一种惯例是使用.字符分开的按命名空间划分的子集合。

数据库

特殊数据库

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