Mongodb 学习笔记2:简介

Mongodb三元素:文档、集合、数据库。

  • 文档——类似行

 多个键值对有序的放置一起就是文档。键不能重复。

                                          {“name”:“jack”,“age”:20}。

      键不能含有\0(空字符),。$是被保留的字符。以_开头的键是保留的。不但区分类型还区分大小写。以下文档是不同的:

                      {“foo”:3}、{“foo”:“3”}、{“Foo”:3}

     注:通常文档中键的顺序并不重要。   

  • 集合——类似表,一组文档

集合是无模式的,可以定义各种各样的文档。不过最好是将相关的文档定义在一个文档,而不是只使用一个文档。

集合命名:不能是空字符串、不能含有\0、不能以system开头、不能含有保留字符$。

“。”字符分开按命名空间划分的子集合。db。blog   、 db。blog。posts。

  • 数据库——多个集合组成

      一个实例可以有多个数据库,可视为完全独立的,各自都有独立的权限控制,存储在不同的数据文件中。可将一个应用的所有数据都存放在同一个数据库中。

    数据库命名:不能是空字符、不得含有‘’(空格)、。、$、/、\、\0、应该全部小写、最多64个字节。其最终变成文件系统里面的文件。

保留的数据库:

     admin:“root”数据库.  添加到这个数据库的用户具有所有的权限。

     local:不会被复制,可存储限于本地单台服务器的任意集合。

     config:当Mongo 用于分片设置时,其在内部使用,用于保存分片相关信息。

命名空间:数据库。集合   admin。blog。posts 其长度不能超过121个字节,实际使用中小于100个字节。


 MongoDB Shell :

         自带一个javascript shell。可以从命令行与Mondodb实例交互。使用shell之前要确保启动mongod。启动参见(学习笔记1)。shell功能具有完备的javascript解释器,可以运行任何javascript程序。如下图所示:

 

    但是shell真正的威力在于它是一个独立的mongodb客户端。启动时 ,shell会连接到test数据库,并将这个数据库连接连接赋值给全局变量db——是通过shell访问Mongodb的主要入口点。

 

 

shell 还具有非javascript语法的扩展。最重要的操作是,可以选择要使用的数据库:(   因为其是一个javascript shell ,因此输入一个变量会将变量的值转换为一个字符串并打印出来)

  


简介

  • 丰富的数据模型  

     Mongdb是面向文档的数据库,而非关系型的数据库。基本思路:将原来的"row(行)"换成"document(文档)"模型。将文档或者数组内嵌起来,用一条记录就可以表示非常复杂的层次关系。 Mongodb没有模式:文档的键不会事先定义也不会固定不变。由于没有模式需要更改,通常不需要迁移大量数据。

  • 容易扩展

         采用面向文档的数据模型使其可以自动在多台服务器之间分割数据,还可以平衡集群的数据和负载,自动重排文档。要是需要更大的容量。只需在集群中添加新机器,然后让数据库来处理剩下的事情。

  • 丰富的功能
  1.  索引——支持通用辅助索引,能进行多种快速查询,也提供唯一的、符合的和地理空间索引能力。
  2. 存储JavaScript——不需要存储过程,直接在服务器端存取JAvascript的函数和值。
  3. 聚合——支持MapReduce和其他聚合工具。
  4.  固定集合——集合的大小是用上限的,对某些类型的数据(日志)特别有用。
  5. 文件存储——支持一种容易使用的协议存储大型文件和文件的元数据。

   其不具备关系数据库的常见功能,如jion和复杂的多行事物。因为这两个功能很难在一个分布式系统上实现。

  • 不牺牲速度

     使用Mongodb传输协议作为与服务器交互的主要方式、对文档进行动态填充、预分配数据文件、使用内存映射文件管理内存、动态查询优化器会“记住”执行查询最高效的方式等。

  • 简便的管理

      除了启动数据库服务器之外,几乎没有什么必要的管理操作。如有主服务器挂掉,就自动切换到备份服务器,并且将备份提升为活跃服务器。在分布式环境下,集群只需要知道有新增加的节点,就会自动集成和配置新节点。

原文地址:https://www.cnblogs.com/lucyawei/p/3039092.html