MongoDB 基础知识 一

1. 文档(Document)

a.文档是MongoDB的核心概念,多个键及其关联的值有序地放置在一起便是文档  ps:多个键值对便是文档

例如,在javascript,文档表示为对象:{"name" : "Elvin","age" : 22} --文档1

{"age" : 22,"name" : "Elvin"} --文档2

b.文档的键/值对是有序的,文档1和文档2是完全不同的。

c.文档里面的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符

  • 键不能含有 (空字符)。 ps:这个字符用来表示键的结尾
  • .和$有特别的意义,只能在特定环境下才能使用,通常是被保留的,使用不当的话驱动程序会提示
  • 以下划线"_"开头的键是被保留的

d.文档的值不仅可以是双引号里面的字符串,还可以是其他几种数据类型 ps:甚至可以嵌入整个文档

e.MongoDB不但区分类型,还区分大小写。例如,下面的文档是不同的

{"foo" : 3} 和{"foo" : "3"}

{"Foo" : 3} 和{"foo" : 3}

还有一个特别需要注意的事项就是:

MongoDB不能有重复的键

2.集合

集合就是一组文档。如果MongoDB中的文档类似于关系型数据库的行 那么集合就如同表。

a.无模式

 集合是无模式的。这意味着一个集合里的文档可以是各式各样的。例如,下面俩个文档可以存在一个集合里面:

{"name"} : "Elvin"}   

{"age" : 22

b.集合的命名

  • 集合不能是空字符串“”
  • 集合名不能含有 (空字符),这个字符表示集合名的结尾
  • 集合名不能以“system.”开头,这是系统集合保留的前缀,如system.users ,system.namespances
  • 用户创建的集合名字不能含有保留字符$,除非要访问系统创建的集合,否则千万不要在名字里出现$.

c.子集合

 组织集合的一种惯例是使用“.”字符分开的按命名空间划分的子集合。例如 一个博客功能的应用可能包含两个集合

分别是blog.posts和blog.authors,这样做的目的是使组织结构更好些。

3.数据库

MongoDB中多个文档组成集合,同样 多个集合可以组成数据库。

和集合一样,数据库也通过名字来标示,数据库名可以是满足一下条件的任意UTF-8字符

  • 不能是空字符串“”
  • 不得含有空格,点,$,/,和空字符( )
  • 应全部小写
  • 最多64字节

要记住一点,数据库名最终会变成文件系统里面的文件,这也是诸多限制的原因。

有一些数据库是保留的,可以直接访问

    • admin  从权限的角度看 这是“root"数据库,要是将一个用户加入到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,例如:列出所有的数据库或者关闭服务器
    • local
    • config

把数据库名字放到集合名前面,得到的就是完全限定名,成为命名空间。命名空间的名字不得超过121字节,一般应小于100字节。