MongoDB快速入门

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

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

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

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

MongoDB 快速入门  - 图1

数据库

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

MongoDB 快速入门  - 图2

集合

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

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

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

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

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

文档

文档是一组键 - 值对。

RDBMS VS MongoDB

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

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据属性/字段(域)
indexindex索引
table joinsEmbedded Documents表连接,MongoDB3.2提供了Join操作
primary keyprimary key主键,MongoDB默认自动将_id字段设置为主键,可以手动设置

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

MongoDB 快速入门  - 图3

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

这12个字节:

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

未来3个字节的机器ID;

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

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

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

示例文档

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

  1. {
  2. _id: ObjectId("57146ec5de7375577083d127")
  3. title: 'MongoDB Overview',
  4. description: 'MongoDB is no sql database',
  5. by: 'itcast.cn',
  6. url: 'http://www.itcast.cn',
  7. tags: ['mongodb', 'database', 'NoSQL'],
  8. likes: 100,
  9. comments: [
  10. {
  11. user:'user1',
  12. message: 'My first comment',
  13. dateCreated: new Date(2011,1,20,2,15),
  14. like: 0
  15. },
  16. {
  17. user:'user2',
  18. message: 'My second comments',
  19. dateCreated: new Date(2011,1,25,7,45),
  20. like: 5
  21. }
  22. ]
  23. }