MongoDB详解

一、MongoDB概述

MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常流行的 文档类型数据库 。

在高负载的情况下,MongoDB 天然支持水平扩展和高可用,可以很方便地添加更多的节点/实例,以保证服务性能和可用性。在许多场景下,MongoDB 可以用于代替传统的关系型数据库或键/值存储方式,皆在为 Web 应用提供可扩展的高可用高性能数据存储解决方案

1、MongoDB的数据结构

MongoDB是面向文档的NoSQL(非关系型)数据库,它的数据结构由字段(Field)和值(Value)组成,类似于JSON对象:

{
    name:"张三",
    sex:"男性",
    age:30
}

2、MongoDB的存储结构

MongoDB的存储结构区别于传统的关系型数据库,由如下三个单元组成:

  • 文档(Document):MongoDB中最基本的单元,由BSON键值对(key-value)组成。相当于关系型数据库中的行(Row)。

  • 集合(Collection):一个集合可以包含多个文档,相当于关系型数据库中的表格(Table)。

  • 数据库(Database):等同于关系型数据库中的数据库概念,一个数据库中可以包含多个集合。您可以在MongoDB中创建多个数据库。

SQL 与 MongoDB 常见术语对比 :

SQL MongoDB
表(Table) 集合(Collection)
行(Row) 文档(Document)
列(Col) 字段(Field)
主键(Primary Key) 对象 ID(Objectid)
索引(Index) 索引(Index)
嵌套表(Embeded Table) 嵌入式文档(Embeded Document)
数组(Array) 数组(Array)

二、Databases and Collections

1、概述

MongoDB将数据记录存储为文档(特别是BSON文档),这些文档在集合中聚集在一起。数据库存储一个或多个文档集合。 

2、Databases

在MongoDB中,数据库保存一个或多个文档集合。要选择要使用的数据库,请在mongosh中使用use语句,如下例所示:

use myDB

3、Create a Database

如果数据库不存在,MongoDB将在您首次存储该数据库的数据时创建该数据库。因此,您可以切换到不存在的数据库,并在mongosh中执行以下操作:

use myNewDB

db.myNewCollection1.insertOne( { x: 1 } )

insertOne()操作创建数据库myNewDB和集合myNewCollection1(如果它们不存在)。确保数据库和集合名称都遵循MongoDB命名限制。

3、Collections

MongoDB将文档存储在集合中。集合类似于关系数据库中的表。

MongoDB详解_第1张图片

4、Create a Collection

如果集合不存在,MongoDB会在您首次存储该集合的数据时创建该集合。 

db.myNewCollection2.insertOne( { x: 1 } )
db.myNewCollection3.createIndex( { y: 1 } )

​insertOne()和createIndex()操作都会创建各自的集合(如果它们不存在)。确保集合名称遵循MongoDB命名限制。

5、显式创建

MongoDB提供了db.createCollection()方法来显式创建具有各种选项的集合,例如设置最大大小或文档验证规则。如果没有指定这些选项,则不需要显式创建集合,因为MongoDB在首次存储集合的数据时会创建新的集合。

6、Document 验证

默认情况下,集合不要求其文档具有相同的架构;即,单个集合中的文档不需要具有相同的字段集,并且字段的数据类型可以在集合中的各个文档中不同。
然而,从MongoDB3.2开始,您可以在更新和插入操作期间强制集合的文档验证规则。 

7、唯一标识符

集合被分配一个不可变的UUID。在副本集的所有成员和碎片集群中的碎片之间,集合UUID保持不变。
要检索集合的UUID,请运行listCollections命令或db.getCollectionInfos()方法。

三、Documents

MongoDB将数据记录存储为BSON文档。BSON是JSON文档的二进制表示,尽管它包含的数据类型比JSON多。有关BSON规范,请参阅bsonspec.org。另请参阅BSON类型。

MongoDB详解_第2张图片

1、兼容性

MongoDB将记录存储为在以下环境中托管的部署的文档: 

  • MongoDB Atlas:云中MongoDB部署的完全托管服务
  • MongoDB Enterprise:MongoDB的基于订阅的自我管理版本
  • MongoDB社区:MongoDB的源代码可用、免费使用和自我管理版本

2、Document 结构 

MongoDB文档由字段和值对组成,结构如下:

{
   field1: value1,
   field2: value2,
   field3: value3,
   ...
   fieldN: valueN
}

字段的值可以是任何BSON数据类型,包括其他文档、数组和文档数组。例如,以下文档包含各种类型的值:

var mydoc = {
               _id: ObjectId("5099803df3f4948bd2f98391"),
               name: { first: "Alan", last: "Turing" },
               birth: new Date('Jun 23, 1912'),
               death: new Date('Jun 07, 1954'),
               contribs: [ "Turing machine", "Turing test", "Turingery" ],
               views : NumberLong(1250000)
            }

上述字段具有以下数据类型:

  • _id包含ObjectId。
  • name保存一个嵌入的文档,其中包含第一个和最后一个字段。
  • birth and death保留Date类型的值。
  • contribs保存字符串数组。
  • views 保存NumberLong类型的值。

你可能感兴趣的:(MongoDB,mongodb,数据库)