成都公司建站模板,兰溪市建设局网站 图片,wordpress rate,在线看网站源码目录 一、MongoDB
1. 简介
2. 主要特点
3. MongoDB 概念解析
与传统 SQL 术语对比
4. 完整术语列表
二、MongoDB 安装
三、 MongoDB Shell
四、数据库管理
五、集合管理
1. 查看集合
2. 创建集合
3. 更新集合名
4. 删除集合
六、文档操作
1. 插入文档
#…目录 一、MongoDB
1. 简介
2. 主要特点
3. MongoDB 概念解析
与传统 SQL 术语对比
4. 完整术语列表
二、MongoDB 安装
三、 MongoDB Shell
四、数据库管理
五、集合管理
1. 查看集合
2. 创建集合
3. 更新集合名
4. 删除集合
六、文档操作
1. 插入文档
1insertOne- 插入单条文档
2insertMany- 批量插入文档
3save - 保存文档
2. 查询文档
1find方法- 查询多条文档
2findOne() 方法- 查询单条文档
3. 删除文档
1deleteOne() - 删除单条文档
2deleteMany() - 批量删除文档
3findOneAndDelete() - 查找并删除
4. 更新文档
1updateOne() - 更新单条文档
2updateMany() - 批量更新文档
3replaceOne() - 替换整篇文档
4findOneAndUpdate() - 查找并更新
七、MongoDB 备份与恢复
1. 安装备份与恢复命令
2. MongoDB 数据备份
3. MongoDB 数据恢复
八、MongoDB 用户管理
1. 连接数据库
2. 切换到目标数据库
3. 创建用户
4. 验证用户
5. 启用身份验证
6. 使用用户身份登录
7. 删除用户 一、MongoDB
1. 简介
MongoDB 是开源的 文档型 NoSQL 数据库由 MongoDB Inc. 开发。 核心定位 以 JSON-like 格式BSON 存储数据 无固定表结构动态适应数据结构变化 专为大规模数据和高并发场景设计
适用场景 实时分析 内容管理系统 物联网数据存储 移动应用后端
2. 主要特点
特性说明对比 SQL灵活模式字段可动态增减无预定义表结构需预定义列和数据类型水平扩展分片集群支持 PB 级数据扩展依赖主从或分库分表高性能读写内存映射引擎 原生索引优化受限于磁盘 I/O 和锁机制聚合框架管道式数据处理类似 SQL GROUP BY 的增强版功能有限地理空间支持内置地理坐标索引和查询需扩展插件实现自动故障转移复制集Replica Set自动切换主节点需额外工具如 MHA
3. MongoDB 概念解析
与传统 SQL 术语对比
MongoDBSQL说明数据库 (Database)Database数据容器同名集合 (Collection)Table文档的容器类似表文档 (Document)Row数据存储单元JSON 格式字段 (Field)Column文档中的键值对嵌入文档JOIN 查询嵌套子文档替代关联表$lookupJOIN 操作跨集合关联查询类似 LEFT JOIN
4. 完整术语列表
术语说明_id文档唯一标识符类似主键BSONBinary JSONMongoDB 的二进制存储格式支持更多数据类型Shard分片水平拆分数据的物理单元Chunk分片内的数据块默认 64MB用于自动均衡分布Replica Set复制集1主 N从保障高可用OpLog操作日志类似 Binlog用于主从同步Aggregation Pipeline聚合管道多阶段数据处理$match → $group → $sortIndex索引支持单字段、复合、地理空间、全文索引TTL Index生存时间索引自动过期数据如日志Mongos路由进程协调分片集群的查询分发Config Server存储集群元数据分片映射关系$lookup聚合阶段操作符实现跨集合关联查询Change Stream实时监听数据变更类似触发器
二、MongoDB 安装 #上传软件包 mongodb-database-tools-rhel70-x86_64-100.12.0.rpm mongodb-linux-x86_64-rhel8-8.0.8.tgz mongosh-2.5.0-linux-x64-openssl3.tar openssl-1.1.1w.tar.gz #安装依赖包
dnf -y install libcurl openssl
#解压安装包
tar zxvf mongodb-linux-x86_64-rhel8-8.0.8.tgz
#将解压包拷贝到指定目录
mv mongodb-linux-x86_64-rhel8-8.0.8 /usr/local/mongodb
cd /usr/local/mongodb
vim /etc/profileexport PATH/usr/local/mongodb/bin:$PATH
#启动执行文件
source /etc/profile
#创建目录
mkdir -p /var/lib/mongo
mkdir -p /var/log/mongodb
#设置当前用户的读写权限
chown whoami /var/lib/mongo
chown whoami /var/log/mongodb#由于mongodb依赖openssl11需要编译安装openssl11
#安装依赖包
dnf -y install gcc perl
#解压安装包
tar zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
#编译安装openssl11
./config --prefix/opt/openssl11 --openssldir/opt/openssl11/ssl
make -j2
make install#设置openssl11环境变量
cd /opt
cd openssl11/
vim /etc/profileexport LD_LIBRARY_PATH/opt/openssl11/lib:$LD_LIBRARY_PATH
#启动执行文件
source /etc/profile.d/openssl11.sh
#启动mongodb服务
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork##fork守护进程
三、 MongoDB Shell
#解压安装包
tar zxvf mongosh-2.5.0-linux-x64-openssl3.tar
cd mongosh-2.5.0-linux-x64-openssl3
cd bin/
cp mongosh /usr/local/bin/
cp mongosh_crypt_vl.so /usr/local/bin/
#验证
mongosh --host hostname --port port
mongosh
四、数据库管理
1.查看数据库列表
show dbs
//查看当前mongodb中所有数据库的列表
db
//查看当前正在使用的数据库2.创建数据库
use aaa
//使用【use 库名】命令创建数据库如果数据库不存在则自动创建db.aaa.insertOne({:}) //插入数据3.删除数据库
db.dropDatabase()4. 默认数据库
默认数据库为 test 若没创建新的数据库数据默认放在这里。5.系统内置数据库
在数据库中admin、config、local 是三个特殊的系统内置数据库admin存储所有数据库的用户身份信息和全局权限用户必须通过它认证后才可以执行跨库管理操作
config仅在分片集群环境中存在存储分片信息、块chunk分布、集合分片策略等关键元数据
local存储当前节点的副本集状态、操作日志oplog等本地数据数据不会被复制到其他节点仅存在于当前实例。
五、集合管理
1. 查看集合
// 查看当前数据库所有集合
show collections// 查看集合详情大小、文档数等
db.getCollectionInfos({ name: users })
参数 filter可选过滤集合如 { name: users }
2. 创建集合
db.createCollection(name, { capped: boolean, // 是否固定集合 size: number, // 固定集合大小字节 max: number, // 固定集合最大文档数 storageEngine: document,// 存储引擎配置 validator: document, // 文档验证规则 ...
})
参数说明
参数类型默认值说明namestring必填集合名称cappedbooleanfalse是否固定大小循环写入sizenumber-固定集合分配的字节大小maxnumber-固定集合允许的最大文档数validatordocument{}文档结构验证规则JSON Schema
3. 更新集合名
db.oldCollectionName.renameCollection( newCollectionName, dropTarget // 可选
)
参数
参数类型默认值说明newCollectionNamestring必填新集合名称dropTargetbooleanfalse是否删除已存在的同名集合危险oldCollectionName旧集合名称
4. 删除集合
db.collection名称.drop(
六、文档操作
1. 插入文档
1insertOne- 插入单条文档
功能向集合中插入一条新文档 语法
db.集合名.insertOne( 文档, // 【必填】要插入的文档JSON对象 { writeConcern: 文档 // 【可选】写关注级别 }
)
参数说明
参数类型说明文档JSON对象要插入的数据如 {name: 张三}writeConcernJSON文档写操作确认级别如 { w: 2 } 需2个节点确认
2insertMany- 批量插入文档
功能一次性插入多条文档 语法
db.集合名.insertMany( [ 文档1, 文档2, ... ], // 【必填】文档数组 { ordered: 布尔值, // 【可选】是否按顺序插入默认true writeConcern: 文档 // 【可选】写关注 }
)
参数说明
参数类型说明文档数组数组多个文档组成的数组ordered布尔值true按序插入出错停止 false乱序插入出错继续
3save - 保存文档
功能根据_id存在与否执行插入或替换 语法
db.集合名.save( 文档, // 【必填】要保存的文档 { writeConcern: 文档 // 【可选】写关注 }
)
此方法已过时建议使用 insertOne() 或 replaceOne() 替代 文档含 _id 且存在 → 执行替换 文档不含 _id 或不存在 → 执行插入
2. 查询文档
1find方法- 查询多条文档
功能查找所有匹配的文档返回游标
db.集合名.find( 查询条件, // 【可选】筛选条件如 {age: {$gt: 25}} 字段投影 // 【可选】控制返回字段
)
参数说明
参数类型说明查询条件JSON文档查询条件空对象 {} 查所有字段投影JSON文档指定返回字段 {字段:1}包含 {字段:0}排除
常用操作符
操作符含义示例$gt大于{age: {$gt: 25}}$in包含{role: {$in: [admin,vip]}}$regex正则匹配{name: {$regex: ^张}}
2findOne() 方法- 查询单条文档
功能返回第一条匹配的文档
db.集合名.findOne( 查询条件, // 【可选】筛选条件 字段投影 // 【可选】控制返回字段
)
特点 直接返回文档对象非游标 无匹配时返回 null
3. 删除文档
1deleteOne() - 删除单条文档
功能删除第一条匹配的文档 语法
db.集合名.deleteOne( 筛选条件, // 【必填】删除条件 { writeConcern: 文档 // 【可选】写关注 }
) 返回结果{ acknowledged: true, deletedCount: 1 } 2deleteMany() - 批量删除文档
功能删除所有匹配的文档 语法
db.集合名.deleteMany( 筛选条件, // 【必填】删除条件 { writeConcern: 文档 // 【可选】写关注 }
)
3findOneAndDelete() - 查找并删除
功能删除并返回被删除的文档 语法
db.集合名.findOneAndDelete( 筛选条件, { projection: 文档, // 【可选】返回字段控制 sort: 文档, // 【可选】排序条件 writeConcern: 文档 }
)
4. 更新文档
1updateOne() - 更新单条文档
功能更新第一条匹配的文档 语法
db.集合名.updateOne( 筛选条件, 更新操作, // 【必填】更新指令 { upsert: 布尔值, // 【可选】无匹配时是否插入默认false writeConcern: 文档 }
)
常用更新操作符
操作符功能示例$set设置字段值{$set: {status: 活跃}}$inc字段值增减{$inc: {库存: -1}}$push数组添加元素{$push: {tags: VIP}}
2updateMany() - 批量更新文档
功能更新所有匹配的文档 语法
db.集合名.updateMany( 筛选条件, 更新操作, { upsert: 布尔值, writeConcern: 文档 }
)
3replaceOne() - 替换整篇文档
功能完全替换匹配的文档覆盖所有字段 语法
db.集合名.replaceOne( 筛选条件, 新文档, // 【必填】完整新文档 { upsert: 布尔值, writeConcern: 文档 }
)
4findOneAndUpdate() - 查找并更新
功能更新并返回文档可选返回更新前/后状态 语法
db.集合名.findOneAndUpdate( 筛选条件, 更新操作, { projection: 文档, // 【可选】返回字段控制 sort: 文档, // 【可选】排序条件 upsert: 布尔值, returnDocument: before或after, // 【可选】返回更新前/后文档 writeConcern: 文档 }
)
七、MongoDB 备份与恢复
1. 安装备份与恢复命令
#mongodb数据备份 备份mongodump 恢复mongorestore rpm -ivh mongodb-database-tools-rhel70-x86_64-100.12.0.rpm 2. MongoDB 数据备份
命令语法 mongodump -h dbhost -d dbname -o dbdirectory 解释 -h : MongoDB 所在服务器地址 -d : 需要备份的数据库实例 -o : 备份的数据库存放位置需要提前建立 3. MongoDB 数据恢复
命令语法 mongorestore -h hostname:port -d dbname path 解释 --host :port, -h :port: MongoDB 所在服务器地址默认为localhost:27017--db , -d 需要恢复的数据库实例例如test当然这个名称也可以和备份时候的不一样比如 test2--drop: 恢复的时候先删除当前数据然后恢复备份的数据。就是说恢复后备份后添加修改的数据都会被删除慎用哦path: mongorestore 最后的一个参数设置备份数据所在位置例如c:\data\dump\test。你不能同时指定path 和 --dir 选项--dir 也可以设置备份目录。--dir: 指定备份的目录你不能同时指定path 和 --dir 选项。 八、MongoDB 用户管理
1. 连接数据库 mongosh 2. 切换到目标数据库 use test 3. 创建用户 db.createUser 命令创建用户并分配角色 例db.createUser({ user: testuser, pwd:password123 roles: [ { role:readWrite,db: database_name}, { role:dbAdmin, db: database_name} ] }) 4. 验证用户 db.auth 命令验证用户 例db.auth(testuser,password123) 5. 启用身份验证 配置文件mongod.conf添加下面内容 security authorization: enabled 重启MongoDB 或者 在启动命令中添加认证参数 mongod --auth --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork 6. 使用用户身份登录 mongosh --host hostname --port port -u testuser -p password123 --authenticationDatabase database_name 7. 删除用户 db.dropUser()