MongoDB 简介
什么是 MongoDB?
MongoDB 是一个面向文档的 NoSQL 数据库,由 C++ 语言编写而成。MongoDB 的特点是存储复杂的数据结构,支持灵活的查询和动态的查询语言,还能通过嵌套产生层次性数据。
MongoDB 的文档是一个类 JSON 的文档,称为 BSON(Binary JSON),能更快更高效地存储数据。MongoDB 不需要事先定义数据模式(schema),可以更加灵活地存储数据。
MongoDB 的优势
高性能
MongoDB 使用了内存映射文件(mmap)技术,能够有效利用内存。在适当的情况下,可以将索引和数据文件映射到内存中,从而提高查询性能。
横向可扩展
MongoDB 支持分布式数据库,可以通过横向扩展来增加存储容量和处理能力。通过添加更多的服务器,可以实现负载均衡和高可用性。
灵活的数据模型
MongoDB 的文档模型非常灵活,能够存储复杂的数据结构。而且可以使用嵌套文档和数组来表示层次性数据,不需要事先定义数据模式。
强大的查询功能
MongoDB 支持丰富的查询操作符,能够进行复杂的查询操作。而且可以创建索引来改善查询性能,支持范围查询、全文搜索等。
MongoDB 的基本概念
数据库(Database)
MongoDB 可以包含多个数据库,每个数据库可以包含多个集合(Collection)。数据库是 MongoDB 的顶层存储单位,一个 MongoDB 服务器可以包含多个数据库。
集合(Collection)
集合是 MongoDB 中一个或多个文档的分组,类似关系数据库中的表。每个集合可以包含多个文档,每个文档可以有不同的结构,灵活存储数据。
文档(Document)
文档是 MongoDB 中最小的数据单元,类似关系数据库中的行。每个文档是一个 JSON 格式的数据结构,可以包含键值对键,还可以嵌套其他文档或数组。
字段(Field)
文档中的键值对称为字段,类似关系数据库中的列。每个字段有一个唯一的键,用于访问字段值。可以根据需要动态地添加字段。
MongoDB 的基本操作
安装 MongoDB
在 Ubuntu 系统中,可以通过以下命令安装 MongoDB:
sudo apt update
sudo apt install -y mongodb
启动 MongoDB 服务
安装完成后,可以通过以下命令启动 MongoDB 服务:
sudo systemctl start mongodb
连接 MongoDB 数据库
可以使用 mongo shell 工具连接到 MongoDB 数据库:
mongo
创建数据库
在 mongo shell 中可以通过以下命令创建数据库:
use mydb
创建集合
在创建的数据库中可以通过以下命令创建集合:
db.createCollection("myCollection")
插入文档
可以使用 insert() 方法向集合中插入文档:
db.myCollection.insert({name: "John", age: 30})
查询文档
可以使用 find() 方法查询文档:
db.myCollection.find()
更新文档
可以使用 update() 方法更新文档:
db.myCollection.update({name: "John"}, { $set: { age: 31 } })
删除文档
可以使用 remove() 方法删除文档:
db.myCollection.remove({name: "John"})
MongoDB 常用操作
查询子文档
可以查询嵌套的子文档:
db.myCollection.find({"address.city": "New York"})
嵌套查询
可以使用 $elemMatch 操作符进行嵌套查询:
db.myCollection.find({scores: { elemMatch: { type: "exam", score: {gt: 80 } } }})
聚合操作
可以使用聚合框架进行复杂的数据分析操作:
db.myCollection.aggregate([
{ group: { _id: "gender", total: { $sum: 1 } } }
])
总结
MongoDB 是一个功能强大的 NoSQL 数据库,它具有高性能、横向可扩展、灵活的数据模型和强大的查询功能。