# MongoDB 简介：为什么选择 MongoDB？

> 原文： [https://howtodoinjava.com/mongodb/introduction-to-mongodb-why-mongodb/](https://howtodoinjava.com/mongodb/introduction-to-mongodb-why-mongodb/)

在直接进入 [**MongoDB**](https://www.mongodb.org/ "mongodb") 的基础知识之前，我们应该尝试了解 [**No-SQL 数据库**](https://en.wikipedia.org/wiki/NoSQL "NoSQL")本身的需要。 为什么传统的[**关系数据库**](https://en.wikipedia.org/wiki/Relational_database "Relational database")失去了与新竞争对手（如 MongoDB）的战斗。 为什么它们在当今如此受欢迎。 为什么？

## 为什么使用 NoSQL？

过去 15 年中，交互式应用发生了巨大变化，这些应用的数据管理需求也发生了变化。 数据**变得更加易于通过 Facebook，D & B 等第三方**进行捕获和访问。 个人用户信息，地理位置数据，社交图谱，用户生成的内容，机器记录数据和传感器生成的数据只是捕获的数据不断扩展的一些示例。 并且**对数据的使用正在迅速改变**通信，购物，广告，娱乐和关系管理的性质。 无法快速利用它的应用将很快落后。

开发人员需要一个**非常灵活的数据库**，该数据库可以轻松容纳新的数据类型，并且不会因第三方数据提供商的内容结构更改而受到干扰。 **许多新数据都是非结构化和半结构化的**，因此开发人员还需要一个能够有效存储数据的数据库。 不幸的是，关系数据库使用的严格定义的，基于模式的方法使不可能快速合并新类型的数据，并且不适用于非结构化和半结构化数据。 NoSQL 提供了可以更好地映射这些需求的数据模型。

## 为什么选择 MongoDB？

MongoDB 是**开源文档数据库**，可在一组用作存储节点的可配置系统上提供**高性能，高可用性和自动扩展**。

MongoDB 之所以大放异彩，是因为它易于使用，无论开发人员是在跨越数百或数千个节点的大型应用中使用它，还是在无需扩展的单服务器应用中使用它。

如果您还记得在 [**JSON**](https://en.wikipedia.org/wiki/JSON "JSON") 中，我们将信息存储在键值对中，如下所示：

```java
{
   name : "lorem",
   address : "ipsum
}

```

MongoDB 将所有数据存储在文档中，该文档是由字段和值对组成的 JSON 样式的数据结构。 MongoDB 以 BSON 序列化格式将文档存储在磁盘上。 [**BSON**](http://bsonspec.org/ "bson") 是 JSON 文档的二进制表示形式，尽管它包含比 JSON 更多的数据类型。 这些文档可以是上面的简单文档，也可以是下面的复杂文档：

```java
{
    id: x,
    name: y,
    other: z,
    multipleArray: [
        {lab1: "A",  lab2: "B", lab3:"C"},
        {lab1: "AB", lab2: "BB", lab3:"CB"},
        {lab1: "AC", lab2: "BC", lab3:"CC"}
    ]
}

```

MongoDB 中大多数用户可访问的数据结构是文档，包括：

+   所有数据库记录。
+   查询选择器，用于定义要选择进行读取，更新和删除操作的记录。
+   更新定义，它们定义在更新期间要修改的字段。
+   索引规范，用于定义要索引的字段。
+   MongoDB 用于报告和配置的数据输出，例如服务器状态和副本集配置文档的输出。

请注意，与关系数据库比较时，MongoDB 也有一些**限制：**

a）不支持连接

b）不支持事务

这就是这篇简短的介绍性文章。 当我们开始学习 MongoDB 时，将学习数百种概念。

学习愉快！

参考文献：

http://www.mongodb.com/leading-nosql-database

http://docs.mongodb.org/manual/core/introduction/