MongoDB之入门

一.术语说明

1.document是mongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行(但是比行要复杂的多)。

2.collection可以看成是没有模式的表。

3.mongoDB单个实例可以容纳多个独立的database,每一个都有自己的集合和权限。

4.mongoDB自带简洁但是功能强大的javascript shell,这个工具对于管理mongoDB实例和操作数据作用很大。

5.每个document都有一个特殊的键“_id”,他在文档所处的集合中是唯一的。

二.document

1.document的key-value是有序的。例如:{“foo”:"3","greeting":"hello"}和{“greeting”:"hello","foo":"3"}是不同的。

2.key不能包含有\0(空字符串).和$有特殊的意义,_开头的键是保留的。

3.mongoDB的document不能含有重复的key。

三.collection

1.collection就是一组文档。mongoDB中的document类似于RDBMS中的行,那么collection就是表。

2.无模式  

  也就是说一个collection中的document结构不一样。同时可以是一个key-value,也可以有多个key-value组成的document。

Q:在这种情况下,既然一个collection中可以存储各种各样的document,哪还有必须要在实际的项目中,建立多个collection吗?把所有的document放在一个collection中不就可以了?

A:(1)把各种各样的document都混在一个collection中,不仅对开发者来还是管理者来说都是噩梦。开发者要么确保每次执行查询的时候只返回需要的种类,要么让执行查询的应用程序来处理所有不同类型的文档。如果查询博客还要剔除那些含有作者数据

(2)在一个集合里面查询特定的文档在速度很不划算,分开做多个collection要快得多。

(3)把同种类型的文档放在一个collection中,这样数据会更加的集中。从只含有博客文章的collection里面查询几篇文章,会从比含有作者和文章数据的集合里面要少消耗磁盘寻道操作。

(4)当创建索引的时候,文档会有附加的结构(尤其是唯一索引的时候)。索引是按照集合来定义的,把同种类型的文档放在同一个collection中,可以使索引更加的有效。

3.

集合名可以是满足下列条件的任意UTF-8字符串

集合名不能是空字符串“”

集合名不能含有\0字符(空字符),这个字符表示集合名的结尾

集合名不能以“system.”开头,这是为系统集合保留的前缀。例如system.users这个集合保存着数据库的用户信息。

用户创建的集合名字不能含有保留字符$.

子集合

组织集合的一种惯例使用"."字符分开的按命名空间划分的子集合。例如,带有博客功能的应用可能包含两个集合,分别是blog.posts和blog.authors.

这样做的目的只是为了使组织结构更好些,也就是说blog这个集合(这里根本就不需要存在)及其子集合没有任何关系。

GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容块分开了。

Mongodb的web控制台通过子集合的方式将数据组织在DBTOP部分

在Mongodb中使用子集合来组织数据是很好的方法。

4.数据库

Mongodb中多个文档组成集合,同样多个集合可以组成数据库。一个Mongodb实例可以承载多个数据库。将一个应用的所有数据都存储在同一个数据库中的作法就很好。

和集合一样,数据库也通过名字来标识。

不能是空字符串("")

不能含有''(空格)、.、$、/、\和\0(空字符)

应全部小写

最多64个字节

要记住一点,数据库名最终会变成文件系统里的文件。

有一些数据库名是保留的

admin

从权限的角度来看,这是"root"数据库

local

这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

config

当Mongodb用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

把数据库的名字放到集合名前面,得到就是集合的全限定名,成为命名空间。命名空间的长度不得超过121字节,在实际使用当中应该小于100字节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值