0 软件版本
> Linux版本:OpenEuler 24.03 SP3 LTS
> Hadoop版本:hadoop3.5.0
> HBase版本:hbase2.5.14
> MongoDB版本:8.2.9
> MongoDB Compass版本:1.49.7
> 参考链接:
安装MongoDB Community Edition - 数据库手册 - MongoDB Docs
https://www.mongodb.com/try/download/compass
MongoDB 8.0.3 手动安装指导 - Installation 安装部署 - openEuler 论坛
————————————————
版权声明:本文为CSDN博主「orion0410」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2401_89005476/article/details/161834441
# MongoDB 简介 ## 1. 基本概念 MongoDB 是一款使用 C++ 开发、基于分布式文件存储的开源 NoSQL 数据库。它介于传统关系型数据库与纯非关系型数据库之间,也是功能最完善、使用体验最接近关系型数据库的 NoSQL 产品。 该数据库采用**文档型**数据存储方式,底层以 BSON(二进制 JSON)格式完成数据存储与检索,部署简单、上手门槛低,同时兼容 Python、Java、C++、PHP 等主流编程语言,被广泛应用于大数据处理、内容管理、移动应用、社交平台、用户信息管理等各类业务场景。 MongoDB 具备三大核心特性: 1. **动态数据模型**:无需提前定义固定的数据表结构,可灵活存储结构多变的数据,适配业务频繁迭代、数据模型持续调整的场景。 2. **水平扩展能力**:支持分片技术,能够将海量数据拆分并分布式存储在多台服务器中,有效提升数据库整体性能与服务可用性。 3. **读写性能优异**:内置索引机制,支持复杂条件查询,可高效处理高并发、大数据量的读写请求。 ## 2. MongoDB 相较于传统关系型数据库的优势 1. **无固定表结构**:数据以键值对形式组织,文档结构类似 JSON 对象,单个文档内还可嵌套其他文档、数组,数据组织形式灵活自由。 2. **摒弃复杂关联关系**:不需要维护多表之间的关联约束,省去复杂的表连接操作,简化数据设计与查询逻辑。 3. **查询能力强大**:配套查询语法功能完备,能力接近于 SQL,可实现多样化的动态条件查询。 4. **运维与扩展简单**:部署、调优难度低,天然支持高可用与弹性扩容,能够轻松应对业务规模增长。 5. **业务对象高度匹配**:程序中的业务对象可以直接映射为数据库文档,降低代码开发成本。 6. **存储模式灵活**:支持内存、磁盘两种存储方式,同时自 4.0 版本起正式支持多文档事务,兼顾数据访问效率与数据一致性,运行稳定可靠。
x.2 MongoDB优势
MongoDb相对于RDBMS的优势:
1.无固定结构 。
2.数据结构由键值(key=>value)对组成。MongoDB 的文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组,单个对象的结构是清晰的。
3.没有复杂的表连接。不需要维护表与表之间的内在关联关系。
4.查询功能强大。MongoDB的查询功能几乎与SQL一样强大,使用基于文档的查询语言,可以对文档进行动态查询。
5.易于调优和扩展。具备高性能、高可用性及可伸缩性等特性
6.应用程序对象与数据库对象天然对应。
7.可以基于内存存储或者硬盘文件存储,提供丰富的查询操作和索引支持,也有事务操作,可以更快地更稳定的访问数据。(mongoDB4.0以后才真正支持所谓的多文档事务操作)。
————————————————
版权声明:本文为CSDN博主「orion0410」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2401_89005476/article/details/161834441
x.3MongoDB 的核心概念与传统 SQL 关系型数据库存在对应关系,下表为两者常用术语对照:
| SQL 数据库 | MongoDB 数据库 |
|---|---|
| 数据库(Database) | 数据库(Database) |
| 数据表(Table) | 集合(Collection) |
| 数据行 / 记录(Row) | 文档(Document) |
| 列 / 字段(Column) | 字段 / 键(Field) |
| 主键(Primary Key) | 对象 ID(ObjectId) |
| 索引(Index) | 索引(Index) |
简要说明
- 数据库:二者概念完全一致,用于独立隔离不同业务的数据。
- 集合:相当于 SQL 中的数据表,集合内可存放多条文档,无需统一结构。
- 文档:是 MongoDB 的最小数据单元,对应 SQL 里的单条数据记录,以 BSON 格式存储。
- 字段:文档中的单个键值对,等同于数据表的列。
- 对象 ID:MongoDB 自动为每条文档生成的唯一标识,作用等价于关系型数据库的主键。
- 索引:功能用法基本相同,均用于优化查询速度。
x.4基本操作
| 命令 | 功能说明 |
|---|---|
db.help() | 查看数据库对象(db)支持的所有操作方法帮助 |
db.mycoll.help() | 查看指定集合(如mycoll)支持的所有操作方法帮助 |
sh.help() | 查看分片(Sharding)相关辅助方法的帮助信息 |
rs.help() | 查看副本集(Replica Set)相关辅助方法的帮助信息 |
help admin | 查看数据库管理相关的操作帮助 |
help connect | 查看数据库连接相关的帮助信息 |
help keys | 查看 Shell 中的快捷键说明 |
help misc | 查看其他杂项相关的提示信息 |
help mr | 查看 MapReduce 相关的帮助说明 |
show dbs | 列出当前系统中所有数据库名称 |
show collections | 列出当前数据库中的所有集合 |
show users | 查看当前数据库中定义的所有用户 |
show profile | 查看最近执行时间 ≥ 1ms 的慢查询记录 |
show logs | 列出所有可用的日志名称 |
show log [name] | 查看指定日志的最后一段内容(默认global) |
use <db_name> | 切换当前操作的数据库(若不存在则隐式创建) |
db.mycoll.find() | 查询mycoll集合中的所有文档 |
db.mycoll.find({ a : 1 }) | 查询mycoll集合中字段a等于1的所有文档 |
it | 迭代查看上一条查询的后续结果(相当于翻页) |
DBQuery.shellBatchSize = x | 设置 Shell 中单次查询结果的默认显示条数(默认 20) |
MongoDB 安装与使用(Linux + Windows + Python 完整版)
1 Linux 环境安装 MongoDB 社区版
本节介绍在 openEuler 等 Linux 系统中手动安装 MongoDB Community Edition 的完整流程。
1.1 下载安装包
前往 MongoDB 官网下载对应系统版本的 MongoDB 安装包: https://www.mongodb.com/try/download/community
首先查看系统架构,确认版本匹配:
bash
运行
uname -m根据系统版本选择tgz 格式压缩包,例如 CentOS 9 /openEuler x86_64。
1.2 解压与重命名
进入安装包所在目录(如 “下载” 文件夹),执行解压命令:
bash
运行
sudo tar -zxvf mongodb-linux-x86_64-rhel93-8.2.9.tgz -C /usr/local进入/usr/local目录,将解压后的文件夹重命名为mongodb:
bash
运行
cd /usr/local sudo mv mongodb-linux-x86_64-rhel93-8.2.9 mongodb修改目录权限,保证普通用户可正常使用:
bash
运行
sudo chown -R hadoop ./mongodb安装完成后,MongoDB 根目录为:
plaintext
/usr/local/mongodb1.3 创建数据与日志目录
进入 MongoDB 目录,创建数据存储路径和日志路径:
bash
运行
cd /usr/local/mongodb mkdir -p data/db mkdir -p data/log1.4 创建配置文件 mongodb.conf
在 MongoDB 根目录下创建配置文件:
bash
运行
vim /usr/local/mongodb/mongodb.conf写入以下配置内容:
yaml
storage: dbPath: /usr/local/mongodb/data/db systemLog: destination: file logAppend: true path: /usr/local/mongodb/data/log/mongod.log net: port: 27017 bindIp: 0.0.0.0 processManagement: fork: true1.5 配置环境变量
编辑用户环境变量文件:
bash
运行
vim ~/.bashrc在文件末尾添加:
bash
运行
export MONGODB_HOME=/usr/local/mongodb export PATH=$PATH:$MONGODB_HOME/bin使环境变量立即生效:
bash
运行
source ~/.bashrc1.6 启动 MongoDB
使用配置文件启动 MongoDB 服务:
bash
运行
mongod --config /usr/local/mongodb/mongodb.conf查看端口是否正常监听:
bash
运行
netstat -lntup | grep 27017开放防火墙端口:
bash
运行
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent sudo firewall-cmd --reload2 使用 Navicat 连接 MongoDB
2.1 建立连接
打开 Navicat,新建 MongoDB 连接:
- 主机:Linux 虚拟机 IP
- 端口:27017 点击测试连接,显示连接成功即可。
可在图形界面中直接创建数据库、集合,并进行数据管理。
3 Windows 安装 MongoDB Shell
3.1 下载安装包
从官网下载 Windows 版本的 MongoDB Shell(zip 压缩包): https://www.mongodb.com/try/download/shell
3.2 解压与配置
解压后放置到简单目录,例如:
plaintext
D:\mongosh将bin目录添加到 Windows 系统环境变量。
打开 CMD,使用以下命令连接 Linux 上的 MongoDB:
bash
运行
mongosh 192.168.80.128:270173.3 常用数据库操作命令
bash
运行
db # 查看当前数据库 show dbs # 显示所有数据库 use 数据库名 # 切换/创建数据库 db.集合.find() # 查询文档 db.集合.insertOne({}) # 插入一条文档 db.集合.updateOne() # 更新一条文档 db.集合.deleteOne() # 删除一条文档 exit / quit() # 退出 shell4 Windows 安装 MongoDB Compass
4.1 下载安装
从官网下载 MongoDB Compass 安装包并安装: https://www.mongodb.com/try/download/compass
4.2 连接数据库
输入 Linux 虚拟机的 IP 与端口 27017,建立连接。
4.3 创建数据库与集合
示例:
- 数据库名:
mongodb - 集合名:
Student
插入示例数据:
json
{ "name": "ZhangSan", "score": { "English": 65, "Math": 86, "Computer": 77 } }json
{ "name": "LiSi", "score": { "English": 55, "Math": 100, "Computer": 88 } }4.4 在 Compass 中使用 Shell
点击右上角Open MongoDB Shell,可执行命令:
bash
运行
db.Student.find({}) # 查询所有学生 db.Student.find({"name":"LiSi"}) # 查询指定学生 db.Student.find({"name":"LiSi"},{"score":1}) # 只查看成绩 db.Student.updateOne({"name":"LiSi"}, {$set:{"score.Math":95}})5 Python 操作 MongoDB
5.1 安装依赖库
bash
运行
pip install pymongo5.2 连接数据库
python
运行
import pymongo client = pymongo.MongoClient("mongodb://192.168.80.128:27017/") db = client["mydb"]5.3 插入数据
python
运行
collection = db["customers"] data = {"name": "John", "address": "Highway 37"} result = collection.insert_one(data) print(result.inserted_id)5.4 查询数据
python
运行
for item in collection.find(): print(item)5.5 更新数据
python
运行
query = {"name": "John"} new_values = {"$set": {"address": "Canyon 123"}} collection.update_one(query, new_values)5.6 删除数据
python
运行
query = {"name": "John"} collection.delete_one(query)5.7 完整示例代码
python
运行
import pymongo # 连接 client = pymongo.MongoClient("mongodb://192.168.80.128:27017/") db = client["mydb"] collection = db["customers"] # 插入 data = {"name": "John", "address": "Highway 37"} res = collection.insert_one(data) print("插入ID:", res.inserted_id) # 查询 for item in collection.find(): print(item) # 更新 query = {"name": "John"} new_val = {"$set": {"address": "Canyon 123"}} collection.update_one(query, new_val) # 删除 collection.delete_one(query)