MongoDB学习笔记二 基本概念
MongoDB是面向集合的文档式数据库,不像关系数据库那样,有表,列、行,mongoDB数据库则是由一系列的文档组成。以下介绍MongoDB的基本概念
一、 文档
文档是mongoDB数据库的最小集合单位,其基本概念为:由多个键及其关联的值有序组合在一起的集合单元。
如{“One”:”Hello World”,”Two”:”Hello,MongoDB”}
从概念可以分析得,由多个键。即可说明文档的组成类似于hash表,每个键对应一个记录值,事实上,可以将文档看成关系数据库中的行,每个键值组合可以看成是这个行中对应的列,键表示列的名称,值则为表列值。
文档定义有如下要求:
1、键不能含有\O(空字符),在mongoDB中,这个字符用来表示的结尾
2、.和$e 有特别含义,在特定环境中使用,使用这两个字符时。需考虑清楚。
3、以下划线“_”也是系统保留字符。使用时需要考虑清楚
4、键是区分大小写的,如{“One”:”Hello”,”one’:”hello”},则表示不同的键
5、在同一个文档中,不能有相同名称的键。即大小写都相同的键,如下面的文档是非法的:
{“one”:”hello”,”one”:”helloworld”}
6、文档中的键值的类型可以不一样的,如:
{“one”:1,”two”:”helloworld”,”three”:0.21}
二、 集合
集合即是一组文档,如果说文档类似于行的话。则集合则相当于表。
在mongoDB中,集合是无模式的,即一个集合中的文档可以各式各样的,在集合中,不同的文档的键值数目可以不一样,其中的键也可以不一样。不同文档同一个键,其值可以不一样,类型也可不一样。也即在同一个集合中,文档是相互独立的。
由于集合没有模式,而在实际使用中,可能会造成困扰,因为既然没有什么模式,集合的文档可以是任意的,那么就没必要要多个集合了。比如,我们建立一个博客数据库,在一个集合中可以保存博客文章、文章类别、登录用户等数据。当然,在实际运用中,怎么运还得看情况而定。
集合命令的规范:
1、 集合名不是能是空字符串;
2、 集合名不能含有\O字符(空字符),mongodb中此字符表示集合名的结尾;
3、 集合名不能以”system.”开头,因为此前缀是系统本身保留的前缀,如system.uses,表示系统用户信息,system.namespaces保存所有数据库集合的信息;
4、 集合名称不能有$字符。
三、 子集合
子集合可以看成是一个命名,如blog.users,blog.author,在这里,blog本身可以不是集合,还可以不存在。使用子集合是为了更好更有条理的区分集合
四、 数据库
多个集合组成数据库。一个MongoDB实例中可以有多个数据库,每个数据库都是完全独立的,有自己的用户,权限信息,即便在磁盘上,其存储的文件也是分开的,这和SQL server之类的数据库一样。不同数据库其数据库文件可以存放在不同的目录。数据库命名规则如下:
1、 不能是空字符串;
2、 不得含有’’(空格)、,、$、/、\、和\O(空字符);
3、 应全部小写
4、 最多64个字节。
除外,数据库名不能与现有系统保留库同名,如admin,local,及config
数据库命名空间:数据库命名空间,是把数据库名称放在集合前面所得到的所有字符串信息。即为命名空间。如blog.article.author。命令空间的长度在实际运用中不能超过100个字符。
中文问题。当集合或文档中使用中文时,出现如图问题:
Malformed UTF-8 character sequence at offset 33
查了好多信息发现,暂时没有解决。得使用第三方的API来解决。郁闷。