MongoDB快速入门

MongoDB 是一个跨平台的,面向文档的数据库,是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

数据库

数据库是一个集合的物理容器。一个单一的MongoDB服务器通常有多个数据库。

集合

文档组,类似于关系数据库中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

比如,我们可以将以下不同数据结构的文档插入到集合中:

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.itcast.cn","name":"传智教程","num":5}

当第一个文档插入时,集合就会被创建。

文档

文档是一组键 - 值对。

RDBMS VS MongoDB

下面给出的表显示RDBMS(关系型数据库管理系统)术语 与 MongoDB 的关系

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据属性/字段(域)
index index 索引
table joins Embedded Documents 表连接,MongoDB3.2提供了Join操作
primary key primary key 主键,MongoDB默认自动将_id字段设置为主键,可以手动设置

通过下图实例,我们也可以更直观的的了解Mongo中的一些概念:

_id是一个12字节的十六进制数,保证每一份文件的唯一性。您可以自己去设置_id插入文档。如果没有提供,那么MongoDB的每个文档提供了一个独特的ID。

这12个字节:

前4个字节为当前时间戳;

未来3个字节的机器ID;

接下来的2个字节的MongoDB的服务进程id;

剩余3个字节是简单的增量值

一个字节等于2位十六进制(一位十六进制的数等于四位二进制的数。一个字节等于8位二进制数)

示例文档

下面给出的示例显示了一个博客网站,这是一个类似于 JSON 对象键值对文档结构。

{
   _id: ObjectId("57146ec5de7375577083d127")
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'itcast.cn',
   url: 'http://www.itcast.cn',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100, 
   comments: [  
      {
         user:'user1',
         message: 'My first comment',
         dateCreated: new Date(2011,1,20,2,15),
         like: 0 
      },
      {
         user:'user2',
         message: 'My second comments',
         dateCreated: new Date(2011,1,25,7,45),
         like: 5
      }
   ]
}