MongoDB入门二:基本概念
前言
工欲善其事必先利其器。在学习MongoDB之前,需要对MongoDB的一些基本概念有系统的了解。
所以,本篇文章主要介绍MongoDB的一些基本概念,这些概念的定义均来自《MongoDB权威指南》,关于此书想要了解更多,请点击此处。
我尽量使用最简洁的语言来尽可能完整地描述这些基本概念,如有遗漏或不妥之处欢迎指正。
文档
文档是MongoDB的核心概念之一。多个键值对有序地放在一起便是文档。例如:
- {"name":"Jerry","score":80}
这个文档有2个键值对,一个是name,其对应的值为"Jerry",另一个是score,其对应的值为“80”。
文档中的键值对是有序的,上面的文档和下面的文档是完全不同的:
- {"score":80,"name":"Jerry"}
文档中的值不仅可以是双引号中的字符串,也可以是数值,比如上面文档中的score,还可以是其他几种数据类型,甚至可以是整个嵌入的文档(会在后续文章中介绍)。
MongoDB不单区分类型,也区分大小写,下面2个文档是不同的:
- {"score":80}
- {"score":"80"}
下面2个文档也是不同的:
- {"score":80}
- {"Score":80}
另一个需要注意的地方是,文档中的键不能重复,例如下面的文档是不符合规定的:
- {"name":"Jerry","score":80,"score":90}
集合
集合也是MongoDB的核心概念之一。集合就是一组文档。如果说文档类似于关系型数据库的记录的话,那集合就类似于关系型数据库的表。
集合中的文档可以是多式多样的,例如下面的2个文档可以同属于一个集合:
- {"name":"长安乱","publisher":"春风文艺出版社","date":"2004-08-01"}
- {"author":"韩寒"}
根据文档的概念,我们知道文档中的键是不能重复的,那集合中的文档是否可以重复?
答案是肯定的,集合中可以放置任意的文档,例如下面的集合是完全符合规定的:
- {"name":"长安乱","publisher":"春风文艺出版社","date":"2004-08-01"}
- {"name":"长安乱","publisher":"春风文艺出版社","date":"2004-08-01"}
因为集合中可以放置任意的文档,那随之而来一个问题,还有必要使用多个集合吗?
答案也是肯定的,理由如下:
把各种各样的文档都混在一个集合里面,无论对于开发者还是管理员来说都是噩梦。开发者要么确保每次查
询只返回需要的文档类型,要么让执行查询的应用程序来从这些文档中筛选出所需要的类型。如果查询书的
名字还要剔除那些含有作者数据的文档,就很令人恼火。在一个集合里面查询特定类型的文档在速度上也很不划算,分开做多个集合要快得多。
从只含书籍信息的集合中查询出几本书,要比从含有书和作者信息的集合中查询消耗更少的磁盘寻道操作。当创建索引的时候,文档会有附加的结构(尤其是有唯一索引的时候)。索引是按照集合来定义的,把同种类
型的文档放入同一个集合里面,可以使索引更加有效。
以上3点理由摘自《MongoDB权威指南》,并稍作了修改。
子集合
在集合的命名中引入"."来组织集合是一个惯例,例如blog.posts和blog.authors,posts和authors可以看作blog的子集合,这里blog本身可以是一个集合,也可以根本就不存在。
数据库
MongoDB中多个文档组成集合,同样多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的。
在对数据库命名的时候,应避免使用以下被保留的数据库名:
- admin
从权限的角度来看,这是一个“root"数据库。如果将一个用户添加到这个数据库,这个用户就自动继承所有数据库的权限。一些特定的服务器端命也只能从这个数据库运行,比如列出所有的数据库或关闭服务器。
- local
这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
- config
当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
把数据库的名字放到集合名称之前,就得到集合的完全限定名,称为命名空间。例如cms数据库中的集合blog.posts的命名空间为cms.blog.posts。
MongoDB入门二:基本概念的更多相关文章
- mongoDB入门必读(概念与实战并重)
一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是 ...
- MongoDB入门二
MongoDB配置 本地启动 c:\MongoDB\bin>mongod.exe --dbpath "C:\\MongoDB\data\db" --logpath " ...
- 汇编入门二 一些概念与PC组件
1.内存:想让CPU工作,必须提供指令与数据,而指令和数据存在于内存中. 2.指令和数据:有点抽象,上书(汇编语言 第二版): 3.存储单元:存储器(内存)被划分为多个存储单元,内个存储单元从0开始顺 ...
- MongoDB入门必读(概念与实战并重)
MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...
- mongodb入门教程二
title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...
- 【二】MongoDB入门
下面是mongodb的一些基本概念: 文档是MongoDB中数据的基本单元,类似关系数据库中的行. 集合,是存储文档的容器,类似关系数据库中的表. MongoDB的单个实例容纳多个数据库,每个数据库都 ...
- mongodb入门命令-创建表数据(二)
1.mongodb入门命令 1.1 show databases; 或 show dbs; //查看当前的数据库 > show dbs; admin 0.000GB config 0.000GB ...
- mongodb入门篇
MongoDB 入门篇 分类: NoSQL, 故障解决 undefined 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data) ...
- MongoDB 入门之基础 DCL
此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ...
随机推荐
- jquery parent和parents的区别
从字面上不难看出parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合.parents则是取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素).可以通过一个可选的表达式进行筛选可以 ...
- Linux Buffers和Cached的区别(转)
在linux下使用free命令查看内存使用情况,有buffers和cached两项,以下是它们的区别: buffers是为块设备设计的缓冲.比如磁盘读写,把分散的写操作集中进行,减少磁盘I/O,从而提 ...
- windows下搭建学习objective-c 的运行环境【转载】
对于Iphone开发学习者而言,Object -c 是必修的语言.但是由于苹果的自我封闭的产业链发展模式(从芯片.机器.开发语言.终端产品.服务)的限制,要想开发针对苹果iPhone等产品的应用程序, ...
- 【Vegas原创】EXCEL光标所在的行自动变色
方法: 1,excel中,按Alt+F11,打开VBA编辑界面,双击需要改的工作表名称,将下面代码粘贴到右边框中,即可. 2,代码: Private Sub Worksheet_Selection ...
- BarManager.ContextMenu
<!--Search & List Area--> <dxb:BarManager Name="barManager1" dxlc:DockLayoutC ...
- LDO/DC-DC区别总结(转)
电源是一个电子系统中不可缺少的非常重要的一部分.但是外接的电源通常不能够完全提供系统中需要的所有的电源种类.因此带来了电源电压的变换问题.常用的电源电压的变换芯片包括LDO和DC-DC两种.下面对这两 ...
- OpenCV仿射变换+投射变换+单应性矩阵
本来想用单应性求解小规模运动的物体的位移,但是后来发现即使是很微小的位移也会带来超级大的误差甚至错误求解,看起来这个方法各种行不通,还是要匹配知道深度了以后才能从三维仿射变换来入手了,纠结~ esti ...
- Scala 深入浅出实战经典 第58讲:Scala中Abstract Types实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- 记录一下,如何配置nodejs nginx的反向代理
本文是在mac下配置nodejs 在nginx下的反向代理 1.安装nodejs,之前就安装了. 2.安装nginx ,我采用的直接源码安装 3.进入 /usr/local/nginx/conf 目录 ...
- EF Repository Update
问题描述: 解决办法: http://www.cnblogs.com/scy251147/p/3688844.html 原理: Attaching an entity of type '' faile ...