MongoDB数据库
MongoDB 的介绍
MongoDB 是一个开源的非关系型数据库系统,采用 C++ 编写,旨在处理大量数据存储和高吞吐量的应用程序。MongoDB 使用 JSON 风格的文档存储数据,具有高度的灵活性和性能。
主要特点:
- 非关系型数据库:不采用传统的关系型数据库表格模型,而是使用文档存储模型。
- 高性能:支持在集群中水平扩展,能够处理大规模的数据存储和高并发访问。
- 灵活的数据模型:文档存储模型支持嵌套文档和数组,适合存储复杂的数据结构。
- 丰富的功能:提供丰富的查询语言、支持多种索引、数据复制和故障恢复机制。
SQL 和 NoSQL 的区别
在关系型数据库(SQL)和非关系型数据库(NoSQL)之间,主要区别在于数据的组织方式和数据模型:
-
SQL 数据库:采用表格模型,数据按照预定义的结构存储,具有严格的一致性和事务支持。
- 数据结构:数据库 > 表 > 行 > 列
- 例子:MySQL、PostgreSQL、Oracle
-
NoSQL 数据库:采用多种数据模型,如文档存储、键值对、列存储和图形数据库,适用于数据结构较为灵活的场景。
- 数据结构:数据库 > 集合(Collection) > 文档(Document) > 字段(Field)
- 例子:MongoDB、Redis、Cassandra
MongoDB 的安装
MongoDB 的安装步骤:
- 下载 MongoDB 安装包:从 MongoDB 官网下载对应版本的安装包。
- 安装 MongoDB:按照官方文档指引安装 MongoDB。
- 配置 MongoDB:根据需要配置 MongoDB 的数据目录、日志文件路径等。
- 启动 MongoDB 服务:启动 mongod 进程以及可选的配置选项。
MongoDB 的简单使用
本地测试启动(功能受限)
在本地测试中,可以使用默认配置启动 MongoDB:
# 启动 MongoDB mongod # 连接 MongoDB Shell mongo
生产方式启动(完整内容)
在生产环境中,需要配置更多的参数,例如数据目录、日志输出、认证等:
# 启动 MongoDB(示例) mongod --dbpath /path/to/data --logpath /path/to/log/mongod.log --fork
MongoDB 的数据库操作和集合操作
MongoDB 中的操作以数据库和集合为单位:
-
数据库操作:
# 切换数据库 use your_database_name # 显示当前数据库 db
-
集合操作:
# 创建集合 db.createCollection("your_collection") # 查看集合列表 show collections
MongoDB 的数据类型
MongoDB 支持多种数据类型,包括字符串、整数、浮点数、日期、数组、嵌套文档等。
MongoDB 插入、查询、修改和删除数据
MongoDB 支持丰富的数据操作:
-
插入数据:
db.collection_name.insertOne({ key: value });
-
查询数据:
db.collection_name.find({ key: value });
-
修改数据:
db.collection_name.updateOne({ filter }, { $set: { key: new_value } });
-
删除数据:
db.collection_name.deleteOne({ filter });
MongoDB 的聚合管道
MongoDB 的聚合管道允许对数据进行多个阶段的处理和转换,如分组、排序、筛选等:
-
分组管道:
db.collection_name.aggregate([ { $group: { _id: "$key", total: { $sum: "$value" } } } ]);
-
其他管道:
db.collection_name.aggregate([ { $match: { key: value } }, { $sort: { key: 1 } }, { $skip: 10 }, { $limit: 5 } ]);
MongoDB 索引和权限管理
-
索引:MongoDB 支持多种索引类型,如单字段索引、复合索引、文本索引等。
db.collection_name.createIndex({ key: 1 });
-
权限管理:MongoDB 支持创建和管理用户及其权限,保障数据安全性。
pymongo 使用
pymongo
是 Python 中操作 MongoDB 的官方驱动程序:
pip install pymongo
使用示例:
from pymongo import MongoClient # 连接 MongoDB client = MongoClient('mongodb://localhost:27017/') # 获取数据库和集合 db = client.your_database_name collection = db.your_collection_name # 插入数据 data = {"key": "value"} result = collection.insert_one(data) # 查询数据 query = {"key": "value"} result = collection.find(query) # 修改数据 update_query = {"key": "value"} new_value = {"$set": {"key": "new_value"}} result = collection.update_one(update_query, new_value) # 删除数据 delete_query = {"key": "value"} result = collection.delete_one(delete_query)