前言

工欲善其事必先利其器。在学习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入门二:基本概念的更多相关文章

  1. mongoDB入门必读(概念与实战并重)

    一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是 ...

  2. MongoDB入门二

    MongoDB配置 本地启动 c:\MongoDB\bin>mongod.exe --dbpath "C:\\MongoDB\data\db" --logpath " ...

  3. 汇编入门二 一些概念与PC组件

    1.内存:想让CPU工作,必须提供指令与数据,而指令和数据存在于内存中. 2.指令和数据:有点抽象,上书(汇编语言 第二版): 3.存储单元:存储器(内存)被划分为多个存储单元,内个存储单元从0开始顺 ...

  4. MongoDB入门必读(概念与实战并重)

    MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...

  5. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  6. 【二】MongoDB入门

    下面是mongodb的一些基本概念: 文档是MongoDB中数据的基本单元,类似关系数据库中的行. 集合,是存储文档的容器,类似关系数据库中的表. MongoDB的单个实例容纳多个数据库,每个数据库都 ...

  7. mongodb入门命令-创建表数据(二)

    1.mongodb入门命令 1.1 show databases; 或 show dbs; //查看当前的数据库 > show dbs; admin 0.000GB config 0.000GB ...

  8. mongodb入门篇

    MongoDB 入门篇 分类: NoSQL, 故障解决 undefined 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data) ...

  9. MongoDB 入门之基础 DCL

    此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ...

随机推荐

  1. Window Server 2008 R2 TFS2010的安装和配置

    1.打开Setup进行安装 2.下一步,然后功能全选 3.点击安装,便开始安装了 安装成功 配置 进行配置之后,选择高级,因为其他功能可能没那么多 到如下界面后,直接进行下一步就可以 下一步,设置TF ...

  2. 隐藏nginx 版本号信息

    为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...

  3. 通过反射获取Android通知栏高度

    public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; F ...

  4. 持续集成(二)环境搭建篇—内网邮件server搭建

    在我们的持续构建中,项目构建中出现错误提醒.或者开发者之间的沟通交流,进度汇报的事务,都是离不开一个通信工具.那就是邮件.在我们的项目开发中假设使用第三方的邮件平台,这肯定不是最好的选择.由于第三方的 ...

  5. 【转】TCP协议的无消息边界问题

    http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html   使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的, ...

  6. CSS3学习笔记——伪类hover

    最近看到一篇文章:“Transition.Transform和Animation使用简介及应用展示”    ,想看看里面 “不同缓动类效果demo”例子的效果,发现了一个问题如下: .Trans_Bo ...

  7. Eclipse中集成Tomcat

    问题: 很多时候在Eclipse中启动Tmocat后,不能访问本机的localhost:8080主页,并且其他项目也不能访问. 原因: 打开Tomcat下的webapp后也找补到项目目录,这是因为Ec ...

  8. VS2005 / windows sdk7.1配置

    VS2005工程需要调用一些后期VS带的库 1. VS2005 安装顺序 1.vs20052.msdn(optional)3.VS80sp1-KB926601-X86-ENU_SP1.exe4.VS8 ...

  9. 关于Parallel.For/Foreach并行方法中的localInit, body, localFinally使用

    对集合成员的操作往往可以通过并行来提高效率,.NET Parallel类提供了简单的方法来帮助我们实现这种并行,比如Paralle.For/ForEach/Invoke方法. 其中,For/ForEa ...

  10. ios 关于文件操作 获取 文件大小

     分类: Apple IPhone2012-06-28 11:31 4664人阅读 评论(0) 收藏 举报 ios语言manager测试c c语言 实现 #include "sys/stat ...