MongoDB和关系型数据库的对应关系

关系数据库 MongoDB
数据库   database 数据库   database
表格  table 集合  collection
行  row 文档   document
列  column 字段  field
索引  index 索引  index
表联合  table  joins                     嵌入文档
主键  primary  key 主键  primary  key 。MongoDB 默认主键为 _id 

关系数据库示例:

id name age score
1 张三 20 90
2 李四 21 95

MongoDB对应的:

{
"_id":ObjectId(.......),
"name":"张三",
"age":,
"score":
}
{
"_id":ObjectId(.......),
"name":"李四",
"age":,
"score":
}

数据库(database)

一个MongoDB中可以建立多个数据库,这些数据库是相互独立的,有自己的集合和权限。不同的数据库使用不同的文件存储(不存储在一个文件中)。

MongoDB默认有4个数据库:

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

数据库名要全部小写。

字段(field)

即一个键值对,key必须是String类型,value可以是任意类型。

文档(document)

文档是一组键值对,用{ }表示,字段之间用逗号分隔。相当于关系数据库中的一行(一条记录)。

示例:一个文档

{

  "name":"张三",

  "age":20,

  "score":98

}

这样写是为了方便看字段,也可以写在一起{"name":"张三","age":20,"score":98},一样的。

说明:

  • 文档中的键值对是有序的
  • 一个文档中不能有重复的key(对应关系数据库中的一条记录)
  • 以"_"开头的key是保留的,有特殊含义。

集合(collection)

集合是一组文档。集合相当于关系数据库中的表,但集合中的文档长度可不同(集合中的文档中的键值对个数可不同)、集合中文档的key可不同。

向集合中插入第一个文档时,集合会被自动创建。

示例:一个集合

{
"name":"张三",
"age":
}
{
"name":"李四",
"age":
}
{
"name":"王五",
"age":
}

示例:集合中的文档长度可不同

{
"name":张三",
"age":
}
{
"name":"李四"
}
{
"name":"王五",
"age":,
"score":
}

示例:集合中文档的key不同

{
"name":"张三",
"age":,
"score":
}
{
"domain":"www.baidu.com",
"ip":"127.23.45.50"
}

虽然可以这样,但集合中的文档一般是有关联的。

说明:

  • 集合名不能以"system."开头,这是为系统集合保留的前缀。
  • 用户创建的集合名字不能含有保留字符。 

capped collections

普通collection没有指定空间大小,可存储无限多个文档。

capped collection是指定了空间大小的collection,这个collection的大小是有限的,超出这个大小,就不能再存储文档了。

capped,有上限的、封顶的、盖住的、包住的。

和普通 collection 不同,capped collection必须要显式创建,创建时要指定数据存储空间空间大小。

db.createCollection("mycoll", {capped:true, size:})   

第一个参数是集合名称,capped指定是否是capped collection,size指定这个capped collection的数据存储空间的大小,默认单位字节。

说明:

  • capped  collection能进行更新,但不能增加所用空间的大小,若增加所用空间的大小,更新就会失败 。
  • capped collection 不能删除一个文档,但可以使用 drop() 方法删除所有文档。

capped  collection有很高的性能以及队列过期的特性(过期按照插入的顺序)。

capped collection 会高性能地、自动地维护文档的插入顺序,非常适合类似记录日志的功能。

capped collection 是按照文档的插入顺序而不是使用索引确定插入位置,提高了增添数据的效率。

capped collection 是按照文档的插入顺序保存到集合中的,而这些文档在磁盘上存放位置也是按照插入顺序来保存的,所以当我们更新capped collection 中文档的时候,更新后的文档不能超过之前文档的大小,这样话就可以确保所有文档在磁盘上的位置一直保持不变。

MongoDB 基本概念的更多相关文章

  1. mongodb基本概念解析

    MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...

  2. 003.MongoDB主要概念

    一 对比关系 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行 ...

  3. (二)MongoDB基本概念

    (二)MongoDB基本概念 mongodb 2018年03月07日 08时43分53秒 mognoDB是一个面向文档的数据库,而不是关系型数据库,是不是用关系型数据库主要是为了获得更好的扩展性,还会 ...

  4. MongoDB基本概念

    MongoDB是一种强大灵活可扩展的数据存储方式,它扩展了关系数据库的众多功能.MongoDB的功能非常丰富,但是却非常容易上手和便于使用,今天来了解一下MongoDB的主要概念. 文档 文档是的核心 ...

  5. 《mongoDB》概念-数据类型

    一:概念 - mongoDB 是一个面向文档的数据库,而不是关系型数据库. - 摘自<mongoDB 权威指南 第2版>第3页 二:数据类型 - null - 用于表示空值或者不存在的字段 ...

  6. 第04章:MongoDB基本概念

    ① 数据库 MongoDB的一个实例可以拥有一个或多个相互独立的数据库,每个数据库都有自己的集合   集合 集合可以看作是拥有动态模式的表   文档 文档是MongoDB中基本的数据单元,类似于RDB ...

  7. MongoDB快速入门学习笔记2 MongoDB的概念及简单操作

    1.以下列举普通的关系型数据库和MongoDB数据库简单概念上的区别: 关系型数据库 MongoDB数据库 说明 database database 数据库 table collection 数据库表 ...

  8. MongoDB基本概念和安装配置

    基本概念 MongoDB直接存储JSON. 有了NoSQL数据库之后,可以直接在业务层将数据按照指定的结构进行存储. NO SQL NoSQL 1 数据库 数据库 2 表 集合 3 行 文档 4 列 ...

  9. SpringBoot中MongoDB注解概念及使用

    spring-data-mongodb主要有以下注解 @Id 主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束.如果自己不设置@Id主键,mongo会自动生成一个唯一主 ...

随机推荐

  1. 关于在php中变量少写了一个$和页面不断转圈的问题排查和vim的自动补全方式

    php中的所有变量都是页面级的, 即任何一个页面, 最多 都只能在一个文件 : 当前页面内使用, 不存在跨 文件/ 跨页面的 作用域的变量! 因此, 即使是 $GLOBALS 这个变量, 虽然叫全局 ...

  2. electron---更改安装图标

    在用electron开发桌面端的时候,打包成exe文件,需要更改默认的图标: 具体做法: 在根目录新建新建存放icon图标的目录: 需要两个icon:icon.icns,icon.ico 注意: 1. ...

  3. 如何解决Windows 10屏幕字体缩放模糊问题

    https://www.ithome.com/html/win10/374911.htm 笔者前段时间买了一台小米笔记本Pro,除了有字体模糊的问题外,还是比较满意的.这台笔记本是15.6英寸,108 ...

  4. 荔枝派zero从焊接到跑起linux

    步骤 焊flash芯片(如果大于16M,需要改烧录工具的源码) 焊引脚,为了串口看数据 焊接flash芯片,需要注意1号脚的位置,flash芯片在开发板背面,1号脚位置是靠近麦克风的那边 以下为编译相 ...

  5. linux查看实时日志命令

    tail -f localhost_access_log.2018-12-11.txt(当前时间)今天的实时日志,操作一下系统,就会报出相应的日志

  6. Tensorflow不能使用GPU的解决办法

    转载:https://blog.csdn.net/kudou1994/article/details/86735451 服务器在训练模型,另一边我在瞎胡乱搞不晓得咋个搞的,就不能使用GPU了.pyth ...

  7. ajaxSubmit的data属性

    https://www.cnblogs.com/shiyou00/p/6841801.html js-art-template 修改一处代码的时候发现了让我疑惑的地方.ajaxSubmit的data用 ...

  8. .Net Oracle TransactionScope的使用

    IIS服务器和Oracle服务器: 1.配置msdtc允许DTC访问及启用事务 2.配置msdtc程序入站出站例外 3.数据库连接字符串不能带enlist=false标识 如下这样带enlist=fa ...

  9. 大数据 -- zookeeper和kafka集群环境搭建

    一 运行环境 从阿里云申请三台云服务器,这里我使用了两个不同的阿里云账号去申请云服务器.我们配置三台主机名分别为zy1,zy2,zy3. 我们通过阿里云可以获取主机的公网ip地址,如下: 通过secu ...

  10. Spring MVC -- 单元测试和集成测试

    测试在软件开发中的重要性不言而喻.测试的主要目的是尽早发现错误,最好是在代码开发的同时.逻辑上认为,错误发现的越早,修复的成本越低.如果在编程中发现错误,可以立即更改代码:如果软件发布后,客户发现错误 ...