版权所有,转载请注明出处。
章节
MongoDB是一个以文档为中心的NOSQL数据库,具备高性能、高可用性及可伸缩性等特性。
下面介绍MongoDB中的基础概念:
Database/数据库
与关系数据库类似,MongoDB中,数据库代表了一个独立的数据存储库,每个数据库在文件系统上都有自己的一组文件。一个MongoDB服务器通常有多个数据库。
Collection/集合
Collection/集合是一组MongoDB文档,相当于关系数据库中的表,包含于数据库中。与关系数据库的表不同,集合不要求固定一致的表结构,集合中的文档可以有不同的字段。但是,集合中的文档都应具有相似或相关联的意义,例如:订单集合,包含了全部订单文档。
Document/文档
文档是一组JSON格式的键值对,。文档具有动态数据结构,同一集合中的文档不需要具有相同的字段集。
下表显示了RDBMS术语与MongoDB之间的关系。
关系数据库 | MongoDB |
---|---|
Database | Database |
Table | Collection |
Tuple/Row | Document |
column | Field |
Table Join | Embedded Documents |
Primary Key | Primary Key (由mongodb本身提供的默认键_id) |
服务器和客户端 | |
Mysqld/Oracle | mongod |
mysql client | mongo |
文档示例
下面的示例,显示了一个博客站点的文档结构,是一组逗号分隔的键值对。
{
_id: ObjectId("507f191e810c19729de860ea")
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'qikegu',
url: 'httpS://www.qikegu.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100,
comments: [
{
user:'user1',
message: 'My first comment',
dateCreated: new Date(2019,1,20,2,15),
like: 0
},
{
user:'user2',
message: 'My second comments',
dateCreated: new Date(2019,1,25,7,45),
like: 5
}
]
}
_id是一个12字节的十六进制数字,唯一标识文档。你可以在插入文档时指定_id
,如果不指定,MongoDB将会生成一个。这12个字节由下面几部分组成:
- 4 字节 - 表示自Unix纪元以来的秒数
- 5 字节 - 随机值
- 3 字节 - 计数器,从一个随机值开始