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来解决。郁闷。

 

posted @ 2011-09-18 20:08  木头人 !  阅读(4220)  评论(1编辑  收藏  举报