MongoDB 基本概念
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 基本概念的更多相关文章
- mongodb基本概念解析
MongoDB 概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更容易理解Mongo中的一些概念: SQL术 ...
- 003.MongoDB主要概念
一 对比关系 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行 ...
- (二)MongoDB基本概念
(二)MongoDB基本概念 mongodb 2018年03月07日 08时43分53秒 mognoDB是一个面向文档的数据库,而不是关系型数据库,是不是用关系型数据库主要是为了获得更好的扩展性,还会 ...
- MongoDB基本概念
MongoDB是一种强大灵活可扩展的数据存储方式,它扩展了关系数据库的众多功能.MongoDB的功能非常丰富,但是却非常容易上手和便于使用,今天来了解一下MongoDB的主要概念. 文档 文档是的核心 ...
- 《mongoDB》概念-数据类型
一:概念 - mongoDB 是一个面向文档的数据库,而不是关系型数据库. - 摘自<mongoDB 权威指南 第2版>第3页 二:数据类型 - null - 用于表示空值或者不存在的字段 ...
- 第04章:MongoDB基本概念
① 数据库 MongoDB的一个实例可以拥有一个或多个相互独立的数据库,每个数据库都有自己的集合 集合 集合可以看作是拥有动态模式的表 文档 文档是MongoDB中基本的数据单元,类似于RDB ...
- MongoDB快速入门学习笔记2 MongoDB的概念及简单操作
1.以下列举普通的关系型数据库和MongoDB数据库简单概念上的区别: 关系型数据库 MongoDB数据库 说明 database database 数据库 table collection 数据库表 ...
- MongoDB基本概念和安装配置
基本概念 MongoDB直接存储JSON. 有了NoSQL数据库之后,可以直接在业务层将数据按照指定的结构进行存储. NO SQL NoSQL 1 数据库 数据库 2 表 集合 3 行 文档 4 列 ...
- SpringBoot中MongoDB注解概念及使用
spring-data-mongodb主要有以下注解 @Id 主键,不可重复,自带索引,可以在定义的列名上标注,需要自己生成并维护不重复的约束.如果自己不设置@Id主键,mongo会自动生成一个唯一主 ...
随机推荐
- apache httpd 从2.2升级到2.4的过程及中间遇到的坑
背景描述: 最近集团在做安全扫描,扫出了http的漏洞,一看是监控nagios涉及到的httpd,于是就考虑将httpd升级到最新的版本,在升级的过程中,真是遇到了很多的坑,弄了2天终于搞定了,现在梳 ...
- Visual-Based Autonomous Driving Deployment from a Stochastic and Uncertainty-Aware Perspective
张宁 Visual-Based Autonomous Driving Deployment from a Stochastic and Uncertainty-Aware Perspective Le ...
- zookeeper+Dubbo环境搭建及简单Demo
1 安装zk https://www.cnblogs.com/feifeicui/p/11175502.html 2 安装 dubbo-admin https://www.cnblogs.com/fe ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器启用https服务申请免费证书
背景分析 目前想在 web 上使用 HTTPS 的话, 你需要获得一个证书文件, 该证书由一个受浏览器信任的公司所签署. 一旦你获得了它, 你就在你的 web 服务器上指定其所在的位置, 以及与你关联 ...
- Docker Compose 部署Nginx服务实现负载均衡
Compose简介: Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器.Comp ...
- 【bat】【windows】win10查看所有wifi密码
win10的可以,win7的好像不行 @echo off & setlocal EnableDelayedExpansion title 查看所有wifi和密码 for /f "us ...
- ThinkPHP3(添加,修改,删除)
实现商品的添加 1.在add.html页面中更改表单元素的名称 Goods控制器的add()方法中获取商品分类 在add.html中循环获取 2.设置提交的位置 3.添加商品代码参见GoodsCont ...
- log4j重复打印的解决方法
log4j的logger(旧版本称logger)是层次结构的,子logger会继承父logger的属性,appender也是可继承的属性,这常常 容易导致配置错误而引起的log4j输出重复的log信息 ...
- Java开发笔记(一百四十八)通过JDBC查询数据记录
前面介绍了通过JDBC如何管理数据库,当时提到Statement专门提供了executeQuery方法用于查询操作,为什么查询操作这么特殊呢?这是因为其它语句跑完一次就了事了,顶多像insert.up ...
- 【leetcode】590. N-ary Tree Postorder Traversal
Recurisve: /* // Definition for a Node. class Node { public: int val; vector<Node*> children; ...