🧰 运维资源

服务器运维资源大全

命令速查、配置模板、端口对照、运维脚本、学习资源...一站式满足运维需求

命令速查

常用命令快速查找

📁 文件操作

ls -la列出所有文件详细信息
ls -lh人类可读格式显示大小
cd /path切换目录
cd ~切换到用户主目录
cd -切换到上一个目录
pwd显示当前目录路径
cp -r src dst递归复制目录
cp -p src dst保留属性复制
mv src dst移动/重命名文件
rm -rf dir递归强制删除目录
rm -i file交互式删除
mkdir -p dir/sub创建多级目录
touch file创建空文件
cat file查看文件内容
cat -n file显示行号查看
head -n 20 file查看文件前20行
tail -n 20 file查看文件后20行
tail -f file实时追踪文件变化
find / -name "*.log"查找文件
find . -size +100M查找大于100M的文件
chmod 755 file修改文件权限
chmod -R 755 dir递归修改目录权限
chown user:group file修改文件所有者
ln -s src link创建软链接

📊 系统监控

top实时进程监控
htop增强版进程监控
free -h查看内存使用
df -h查看磁盘使用
df -i查看inode使用
du -sh dir查看目录大小
du -h --max-depth=1查看子目录大小
ps aux查看所有进程
ps aux | grep name查找进程
kill PID终止进程
kill -9 PID强制终止进程
killall name按名称终止进程
netstat -tlnp查看监听端口
netstat -anp查看所有网络连接
ss -tlnp查看TCP监听端口
lsof -i :port查看端口占用
uptime查看系统运行时间
iostat -x 1磁盘IO统计
vmstat 1 5虚拟内存统计
iotop磁盘IO实时监控

🔧 系统管理

systemctl start service启动服务
systemctl stop service停止服务
systemctl restart service重启服务
systemctl status service查看服务状态
systemctl enable service设置开机自启
systemctl disable service取消开机自启
journalctl -u service查看服务日志
journalctl -u service -f实时查看服务日志
journalctl --since today查看今天的日志
crontab -e编辑定时任务
crontab -l查看定时任务
tar -czvf file.tar.gz dir压缩目录
tar -xzvf file.tar.gz解压文件
wget url下载文件
wget -c url断点续传下载
curl -O url下载文件
curl -I url查看响应头
scp file user@host:/path上传文件
rsync -avz src/ dst/同步目录
hostname查看主机名
uname -a查看系统信息
reboot重启系统
shutdown -h now立即关机

🌐 网络工具

ping host测试连通性
ping -c 5 host指定次数ping
traceroute host追踪路由
dig domainDNS查询
nslookup domainDNS查询
telnet host port测试端口连通
nc -zv host port扫描端口
ip addr查看IP地址
ifconfig查看网络配置
iptables -L查看防火墙规则
tcpdump -i eth0抓包

👤 用户管理

useradd username创建用户
userdel username删除用户
passwd username设置密码
usermod -aG group user添加用户到组
groupadd groupname创建组
id username查看用户信息
whoami查看当前用户
su - username切换用户
sudo command以root执行命令

🐳 容器管理

docker ps查看运行中的容器
docker ps -a查看所有容器
docker ps -q只显示容器ID
docker start container启动容器
docker stop container停止容器
docker restart container重启容器
docker kill container强制停止容器
docker rm container删除容器
docker rm -f container强制删除运行中的容器
docker logs container查看容器日志
docker logs -f container实时查看日志
docker logs --tail 100 container查看最后100行日志
docker exec -it container bash进入容器
docker exec container cmd在容器中执行命令
docker cp file container:path复制文件到容器
docker stats查看容器资源使用
docker top container查看容器进程
docker port container查看容器端口映射
docker inspect container查看容器详细信息

📦 镜像管理

docker images查看本地镜像
docker images -a查看所有镜像
docker pull image:tag拉取镜像
docker push image:tag推送镜像
docker rmi image删除镜像
docker rmi -f image强制删除镜像
docker build -t name:tag .构建镜像
docker build --no-cache -t name:tag .不使用缓存构建
docker tag old new标记镜像
docker save -o file.tar image导出镜像
docker load -i file.tar导入镜像
docker history image查看镜像历史
docker search keyword搜索镜像
docker image prune清理无用镜像
docker image prune -a清理所有未使用镜像

🚀 容器运行

docker run image运行容器
docker run -d image后台运行
docker run -it image bash交互式运行
docker run --name name image指定容器名
docker run -p 80:80 image端口映射
docker run -P image随机端口映射
docker run -v /host:/container image挂载目录
docker run -e KEY=VALUE image设置环境变量
docker run --restart=always image自动重启策略
docker run -m 512m image内存限制
docker run --cpus=1 imageCPU限制
docker run --network host image使用主机网络

🌐 网络与数据卷

docker network ls查看网络
docker network create name创建网络
docker network rm name删除网络
docker network connect net container连接容器到网络
docker volume ls查看数据卷
docker volume create name创建数据卷
docker volume rm name删除数据卷
docker volume prune清理无用数据卷

🔧 Docker Compose

docker-compose up启动项目
docker-compose up -d后台启动
docker-compose up --build重新构建并启动
docker-compose down停止并删除
docker-compose start启动服务
docker-compose stop停止服务
docker-compose restart重启服务
docker-compose ps查看服务状态
docker-compose logs查看日志
docker-compose logs -f实时查看日志
docker-compose exec service bash进入服务容器
docker-compose pull拉取所有镜像
docker-compose build构建所有镜像

🧹 系统清理

docker system df查看磁盘使用
docker system prune清理无用资源
docker system prune -a清理所有未使用资源
docker system prune --volumes清理数据卷
docker container prune清理停止的容器
docker network prune清理无用网络

📥 基础操作

git init初始化仓库
git clone url克隆仓库
git clone url --depth 1浅克隆(只克隆最新)
git status查看状态
git status -s简洁状态
git add .添加所有文件
git add file添加指定文件
git add -p交互式添加
git commit -m "msg"提交更改
git commit -am "msg"添加并提交
git commit --amend修改上次提交
git push origin branch推送到远程
git push -u origin branch推送并设置上游
git push -f强制推送
git pull origin branch拉取更新
git pull --rebase变基拉取
git fetch origin获取远程更新
git log查看提交历史
git log --oneline简洁历史
git log --graph图形化历史
git log -p -2最近2次提交差异
git show commit查看提交详情

🌿 分支管理

git branch查看本地分支
git branch -a查看所有分支
git branch -r查看远程分支
git branch name创建分支
git branch -d name删除分支
git branch -D name强制删除分支
git branch -m old new重命名分支
git checkout branch切换分支
git checkout -b branch创建并切换分支
git checkout -b branch origin/branch检出远程分支
git switch branch切换分支(新版)
git switch -c branch创建并切换(新版)
git merge branch合并分支
git merge --no-ff branch禁用快进合并
git merge --abort取消合并
git push origin --delete branch删除远程分支

🔄 回退操作

git diff查看工作区差异
git diff --cached查看暂存区差异
git diff branch1 branch2比较分支差异
git reset HEAD file取消暂存
git reset --soft HEAD~1软回退保留更改
git reset --mixed HEAD~1回退到工作区
git reset --hard HEAD~1硬回退丢弃更改
git revert commit撤销提交(新建提交)
git checkout -- file撤销文件更改
git restore file撤销文件更改(新版)
git restore --staged file取消暂存(新版)
git reflog查看操作历史
git cherry-pick commit挑选提交
git cherry-pick commit1..commit2挑选多个提交
git clean -fd删除未跟踪文件

📦 暂存与标签

git stash暂存更改
git stash save "msg"暂存并备注
git stash list查看暂存列表
git stash pop恢复并删除暂存
git stash apply恢复暂存(保留)
git stash drop删除暂存
git stash clear清空所有暂存
git tag查看标签
git tag name创建轻量标签
git tag -a name -m "msg"创建附注标签
git tag -d name删除标签
git push origin tag推送标签
git push origin --tags推送所有标签

🔧 高级操作

git rebase branch变基操作
git rebase -i HEAD~3交互式变基
git rebase --abort取消变基
git rebase --continue继续变基
git bisect start开始二分查找
git bisect bad标记坏提交
git bisect good标记好提交
git blame file查看文件修改历史
git remote -v查看远程仓库
git remote add name url添加远程仓库
git remote remove name删除远程仓库
git config --list查看配置
git config user.name "name"设置用户名
git config user.email "email"设置邮箱

⚙️ 服务管理

nginx启动Nginx
nginx -s stop快速停止
nginx -s quit优雅停止
nginx -s reload重新加载配置
nginx -s reopen重新打开日志
nginx -t测试配置文件
nginx -T测试并显示配置
nginx -v查看版本
nginx -V查看版本和编译参数
systemctl start nginxsystemctl启动
systemctl stop nginxsystemctl停止
systemctl restart nginxsystemctl重启
systemctl reload nginxsystemctl重载
systemctl status nginx查看服务状态

📝 反向代理配置

proxy_pass http://upstream;反向代理
proxy_set_header Host $host;设置主机头
proxy_set_header X-Real-IP $remote_addr;设置真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;转发IP链
proxy_set_header X-Forwarded-Proto $scheme;转发协议
proxy_connect_timeout 60s;连接超时
proxy_read_timeout 60s;读取超时
proxy_send_timeout 60s;发送超时
proxy_buffering on;开启缓冲
proxy_buffer_size 4k;缓冲区大小
proxy_buffers 8 4k;缓冲区数量
proxy_cache zone;启用缓存

⚖️ 负载均衡配置

upstream backend { ... }定义后端组
server 192.168.1.1:8080;后端服务器
server 192.168.1.1:8080 weight=3;权重配置
server 192.168.1.1:8080 backup;备份服务器
server 192.168.1.1:8080 down;标记下线
server 192.168.1.1:8080 max_fails=3;最大失败次数
server 192.168.1.1:8080 fail_timeout=30s;失败超时
least_conn;最少连接算法
ip_hash;IP哈希算法
hash $request_uri;URI哈希算法
keepalive 32;保持连接数
keepalive_timeout 60s;保持连接超时

🔄 URL重写与重定向

rewrite ^/old(.*)$ /new$1 last;URL重写
rewrite ^/old(.*)$ /new$1 redirect;临时重定向(302)
rewrite ^/old(.*)$ /new$1 permanent;永久重定向(301)
return 301 https://$host$request_uri;HTTPS重定向
return 302 https://example.com;临时重定向
return 403;返回403
return 404;返回404
return 500 "Server Error";返回自定义内容
try_files $uri $uri/ /index.html;尝试文件
break;停止处理

🔒 安全与限流

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;定义限流区域
limit_req zone=one burst=20 nodelay;应用限流
limit_conn_zone $binary_remote_addr zone=addr:10m;连接限制区域
limit_conn addr 10;限制连接数
deny 192.168.1.1;拒绝IP
allow 192.168.1.0/24;允许IP段
deny all;拒绝所有
auth_basic "Restricted";基本认证
auth_basic_user_file /etc/nginx/.htpasswd;密码文件
add_header X-Frame-Options "SAMEORIGIN";防止点击劫持
add_header X-Content-Type-Options "nosniff";防止MIME嗅探
add_header X-XSS-Protection "1; mode=block";XSS防护

📦 静态资源与缓存

gzip on;开启Gzip压缩
gzip_types text/plain text/css application/json;压缩类型
gzip_min_length 1024;最小压缩大小
gzip_comp_level 6;压缩级别(1-9)
expires 30d;设置缓存30天
expires max;最大缓存
expires -1;禁用缓存
add_header Cache-Control "public, immutable";缓存控制
add_header Cache-Control "no-cache";不缓存
open_file_cache max=1000 inactive=20s;文件缓存
sendfile on;高效文件传输
tcp_nopush on;优化数据包

📊 日志配置

access_log /var/log/nginx/access.log;访问日志
error_log /var/log/nginx/error.log;错误日志
error_log /var/log/nginx/error.log warn;警告级别日志
access_log off;关闭访问日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" ';自定义日志格式
open_log_file_cache max=1000;日志文件缓存

🗄️ 数据库操作

mysql -u root -p登录MySQL
mysql -u root -p -h host远程登录
mysql -u root -p -P 3307指定端口登录
SHOW DATABASES;显示所有数据库
USE database;选择数据库
SELECT DATABASE();显示当前数据库
SHOW TABLES;显示所有表
DESCRIBE table;查看表结构
SHOW CREATE TABLE table;查看建表语句
CREATE DATABASE name;创建数据库
CREATE DATABASE name CHARACTER SET utf8mb4;创建指定字符集
DROP DATABASE name;删除数据库
SELECT VERSION();查看版本
SELECT NOW();查看当前时间
SELECT USER();查看当前用户

📊 表操作

CREATE TABLE name (id INT PRIMARY KEY);创建表
ALTER TABLE name ADD COLUMN col VARCHAR(100);添加列
ALTER TABLE name DROP COLUMN col;删除列
ALTER TABLE name MODIFY COLUMN col INT;修改列类型
ALTER TABLE name RENAME TO new_name;重命名表
ALTER TABLE name ADD INDEX idx_col (col);添加索引
ALTER TABLE name ADD UNIQUE INDEX idx_col (col);添加唯一索引
ALTER TABLE name DROP INDEX idx_col;删除索引
DROP TABLE name;删除表
TRUNCATE TABLE name;清空表
SHOW INDEX FROM table;查看索引
SHOW TABLE STATUS LIKE 'table';查看表状态

💾 备份恢复

mysqldump -u root -p db > backup.sql备份数据库
mysqldump -u root -p --all-databases > all.sql备份所有库
mysqldump -u root -p db table > table.sql备份单个表
mysqldump -u root -p --no-data db > schema.sql只备份结构
mysqldump -u root -p --single-transaction db > backup.sql事务备份
mysqldump -u root -p --quick db > backup.sql快速备份
mysqldump -u root -p db | gzip > backup.sql.gz压缩备份
mysql -u root -p db < backup.sql恢复数据库
gunzip < backup.sql.gz | mysql -u root -p db恢复压缩备份
mysqlhotcopy db /backup热备份
mysqlbinlog binlog.000001 | mysql -u root -p恢复binlog

👤 用户权限

CREATE USER 'user'@'host' IDENTIFIED BY 'password';创建用户
GRANT ALL ON db.* TO 'user'@'host';授权
GRANT SELECT, INSERT ON db.* TO 'user'@'host';部分权限
GRANT ALL ON *.* TO 'user'@'host' WITH GRANT OPTION;全部权限
REVOKE ALL ON db.* FROM 'user'@'host';撤销权限
DROP USER 'user'@'host';删除用户
SET PASSWORD FOR 'user'@'host' = PASSWORD('newpwd');修改密码
ALTER USER 'user'@'host' IDENTIFIED BY 'newpwd';修改密码(新版)
SHOW GRANTS FOR 'user'@'host';查看权限
FLUSH PRIVILEGES;刷新权限
SELECT User, Host FROM mysql.user;查看所有用户

🔍 查询优化

EXPLAIN SELECT * FROM table;分析查询
EXPLAIN FORMAT=JSON SELECT * FROM table;JSON格式分析
SHOW STATUS LIKE 'Slow_queries';查看慢查询数
SHOW VARIABLES LIKE 'slow_query%';慢查询设置
SHOW VARIABLES LIKE 'long_query_time';慢查询时间
SET GLOBAL slow_query_log = ON;开启慢查询日志
SET GLOBAL long_query_time = 2;设置慢查询阈值
ANALYZE TABLE table;分析表
OPTIMIZE TABLE table;优化表
CHECK TABLE table;检查表
REPAIR TABLE table;修复表

⚙️ 系统管理

SHOW PROCESSLIST;查看进程
SHOW FULL PROCESSLIST;完整进程列表
KILL process_id;终止进程
KILL QUERY process_id;终止查询
SHOW VARIABLES;查看所有变量
SHOW VARIABLES LIKE 'max_connections';查看特定变量
SET GLOBAL max_connections = 500;设置全局变量
SHOW STATUS;查看状态
SHOW ENGINE INNODB STATUS;InnoDB状态
SHOW MASTER STATUS;主库状态
SHOW SLAVE STATUS;从库状态
SHOW BINARY LOGS;查看binlog
PURGE BINARY LOGS BEFORE '2024-01-01';清理binlog

🔴 基础操作

redis-cli连接Redis
redis-cli -h host -p 6379指定地址连接
redis-cli -a password密码连接
redis-cli -n 1选择数据库
SET key value设置键值
SET key value EX 60设置键值并过期(秒)
SET key value PX 60000设置键值并过期(毫秒)
SETNX key value不存在才设置
SETEX key 60 value设置并指定过期时间
MSET key1 val1 key2 val2批量设置
GET key获取值
MGET key1 key2批量获取
GETSET key newvalue获取并设置新值
DEL key删除键
DEL key1 key2删除多个键
UNLINK key异步删除键
EXISTS key判断键是否存在
EXPIRE key seconds设置过期时间
PEXPIRE key milliseconds设置过期时间(毫秒)
TTL key查看剩余时间(秒)
PTTL key查看剩余时间(毫秒)
PERSIST key移除过期时间
KEYS pattern查找键
SCAN 0 MATCH prefix:* COUNT 100扫描键
TYPE key查看键类型
RENAME old new重命名键
RENAMENX old new不存在才重命名

📊 数据类型

HSET hash field value设置哈希字段
HGET hash field获取哈希字段
HMSET hash f1 v1 f2 v2批量设置哈希
HMGET hash f1 f2批量获取哈希
HGETALL hash获取所有字段
HDEL hash field删除哈希字段
HEXISTS hash field字段是否存在
HKEYS hash获取所有字段名
HVALS hash获取所有字段值
HLEN hash字段数量
LPUSH list value列表左侧插入
RPUSH list value列表右侧插入
LPOP list列表左侧弹出
RPOP list列表右侧弹出
LRANGE list 0 -1获取列表所有元素
LLEN list列表长度
LINDEX list index获取指定位置元素
SADD set member添加集合成员
SREM set member删除集合成员
SMEMBERS set获取所有成员
SISMEMBER set member判断是否成员
ZADD zset score member添加有序集合
ZRANGE zset 0 -1 WITHSCORES获取有序集合
ZREM zset member删除有序集合成员
INCR key自增
DECR key自减
INCRBY key 10指定增量
APPEND key value追加值
STRLEN key获取字符串长度

🔧 运维命令

INFO查看服务器信息
INFO memory查看内存信息
INFO replication查看复制信息
INFO stats查看统计信息
DBSIZE查看键数量
FLUSHDB清空当前数据库
FLUSHALL清空所有数据库
BGSAVE后台保存RDB
SAVE同步保存RDB
LASTSAVE上次保存时间
BGREWRITEAOF后台重写AOF
MONITOR实时监控命令
SLOWLOG GET 10查看慢日志
SLOWLOG LEN慢日志数量
MEMORY USAGE key查看内存占用
MEMORY STATS内存统计
CLIENT LIST查看客户端连接
CLIENT KILL ip:port断开客户端
CONFIG GET *查看所有配置
CONFIG GET maxmemory查看特定配置
CONFIG SET maxmemory 2gb设置配置
DEBUG OBJECT key调试对象
OBJECT ENCODING key查看编码方式

🔄 主从与集群

REPLICAOF host port设置主从
REPLICAOF NO ONE取消主从
ROLE查看角色
CLUSTER INFO集群信息
CLUSTER NODES集群节点
CLUSTER MEET ip port添加节点
CLUSTER FORGET node_id移除节点
CLUSTER REPLICATE node_id设置为从节点
CLUSTER ADDSLOTS slot分配槽
CLUSTER KEYSLOT key查看键的槽
SENTINEL masters查看主库
SENTINEL slaves master查看从库
SENTINEL get-master-addr-by-name name获取主库地址

📦 事务与脚本

MULTI开始事务
EXEC执行事务
DISCARD取消事务
WATCH key监视键
UNWATCH取消监视
EVAL "return KEYS[1]" 1 key执行Lua脚本
EVALSHA sha1 numkeys key arg执行脚本SHA
SCRIPT LOAD "lua code"加载脚本
SCRIPT EXISTS sha1检查脚本存在
SCRIPT FLUSH清空脚本缓存

🍃 基础操作

mongosh连接MongoDB
mongosh "mongodb://host:port"指定连接
mongosh "mongodb://user:pass@host:port/db"认证连接
mongosh "mongodb+srv://cluster/db"SRV连接
show dbs显示所有数据库
use database切换数据库
db显示当前数据库
show collections显示所有集合
db.createCollection("name")创建集合
db.createCollection("name", {capped:true, size:10000})创建固定集合
db.collection.drop()删除集合
db.dropDatabase()删除数据库
db.collection.renameCollection("newname")重命名集合
db.collection.stats()集合统计
db.collection.dataSize()数据大小
db.collection.storageSize()存储大小
db.collection.totalIndexSize()索引大小

📝 文档操作

db.collection.insertOne({})插入单个文档
db.collection.insertMany([{},{}])插入多个文档
db.collection.insert({})插入文档(旧版)
db.collection.find()查询所有
db.collection.find({name:"value"})条件查询
db.collection.find({age:{$gt:18}})大于查询
db.collection.find({age:{$gte:18}})大于等于
db.collection.find({age:{$lt:30}})小于查询
db.collection.find({age:{$lte:30}})小于等于
db.collection.find({name:{$ne:"value"}})不等于
db.collection.find({age:{$in:[18,20,22]}})在数组中
db.collection.find({age:{$nin:[18,20]}})不在数组中
db.collection.find({$or:[{a:1},{b:2}]})或条件
db.collection.find({$and:[{a:1},{b:2}]})与条件
db.collection.find({name:/pattern/})正则匹配
db.collection.findOne({})查询单个
db.collection.find().pretty()格式化输出
db.collection.find().limit(10)限制数量
db.collection.find().skip(10)跳过数量
db.collection.find().sort({name:1})排序(1升序-1降序)
db.collection.find({},{name:1,_id:0})投影查询
db.collection.countDocuments({})统计数量
db.collection.estimatedDocumentCount()估算数量
db.collection.distinct("field")去重查询

✏️ 更新操作

db.collection.updateOne({},{$set:{}})更新单个
db.collection.updateMany({},{$set:{}})更新多个
db.collection.update({},{$set:{}})更新(旧版)
db.collection.replaceOne({},{})替换文档
db.collection.updateOne({},{$unset:{field:""}})删除字段
db.collection.updateOne({},{$inc:{count:1}})字段自增
db.collection.updateOne({},{$mul:{price:1.1}})字段乘法
db.collection.updateOne({},{$rename:{"old":"new"}})重命名字段
db.collection.updateOne({},{$push:{arr:"value"}})数组添加元素
db.collection.updateOne({},{$pull:{arr:"value"}})数组删除元素
db.collection.updateOne({},{$addToSet:{arr:"value"}})数组去重添加
db.collection.updateOne({},{$pop:{arr:1}})删除数组首/尾
db.collection.updateOne({},{$set:{"arr.0":"value"}})更新数组元素
db.collection.updateOne({},{$set:{"arr.$.field":"value"}})更新匹配元素
db.collection.updateOne({},{$set:{}},{upsert:true})不存在则插入

🗑️ 删除操作

db.collection.deleteOne({})删除单个
db.collection.deleteMany({})删除多个
db.collection.remove({})删除(旧版)
db.collection.remove({},true)删除单个(旧版)
db.collection.deleteMany({})删除所有匹配
db.collection.findAndModify({query:{},remove:true})查找并删除
db.collection.findOneAndDelete({})查找并删除

🔧 索引与聚合

db.collection.createIndex({name:1})创建索引
db.collection.createIndex({name:1},{unique:true})唯一索引
db.collection.createIndex({name:1},{sparse:true})稀疏索引
db.collection.createIndex({name:1},{expireAfterSeconds:3600})TTL索引
db.collection.createIndex({name:"text"})文本索引
db.collection.createIndex({loc:"2dsphere"})地理索引
db.collection.createIndex({a:1,b:1})复合索引
db.collection.getIndexes()查看索引
db.collection.dropIndex("name")删除索引
db.collection.dropIndexes()删除所有索引
db.collection.aggregate([{$match:{}}])聚合查询
db.collection.aggregate([{$group:{_id:"$field"}}])分组
db.collection.aggregate([{$group:{_id:null,total:{$sum:"$field"}}}])求和
db.collection.aggregate([{$group:{_id:null,avg:{$avg:"$field"}}}])平均值
db.collection.aggregate([{$sort:{field:-1}}])聚合排序
db.collection.aggregate([{$project:{name:1,_id:0}}])投影
db.collection.aggregate([{$limit:10}])限制
db.collection.aggregate([{$skip:10}])跳过
db.collection.aggregate([{$lookup:{from:"col",localField:"id",foreignField:"id",as:"data"}}])关联查询
db.collection.aggregate([{$unwind:"$array"}])展开数组
db.collection.aggregate([{$count:"total"}])计数

📊 运维命令

db.stats()数据库统计
db.collection.stats()集合统计
db.serverStatus()服务器状态
db.currentOp()当前操作
db.currentOp({"secs_running":{$gt:5}})长时间操作
db.killOp(opid)终止操作
db.collection.explain().find({})执行计划
db.collection.explain("executionStats").find({})详细执行计划
db.collection.validate()验证集合
db.collection.reIndex()重建索引
db.collection.compact()压缩集合
db.printReplicationInfo()复制信息
db.printSlaveReplicationInfo()从库复制信息
rs.status()副本集状态
rs.conf()副本集配置
rs.initiate()初始化副本集
rs.add("host:port")添加副本成员
rs.remove("host:port")移除副本成员
rs.stepDown()主库降级
sh.status()分片状态
sh.enableSharding("db")启用分片
sh.shardCollection("db.col",{key:1})分片集合

💾 备份恢复

mongodump --db dbname --out /backup备份数据库
mongodump --host host --port 27017 --db dbname --out /backup指定地址备份
mongodump --uri "mongodb://user:pass@host/db" --out /backupURI连接备份
mongodump --db dbname --collection col --out /backup备份集合
mongodump --db dbname --query '{"status":"active"}'条件备份
mongodump --archive > backup.archive归档备份
mongodump --gzip --out /backup压缩备份
mongorestore --db dbname /backup/dbname恢复数据库
mongorestore --drop --db dbname /backup/dbname恢复并删除现有
mongorestore --archive < backup.archive归档恢复
mongorestore --gzip /backup压缩恢复
mongoexport --db dbname --collection col --out file.json导出JSON
mongoexport --db dbname --collection col --type=csv --fields name,age --out file.csv导出CSV
mongoexport --db dbname --collection col --query '{"status":"active"}' --out file.json条件导出
mongoimport --db dbname --collection col --file file.json导入JSON
mongoimport --db dbname --collection col --type=csv --fields name,age --file file.csv导入CSV
mongoimport --db dbname --collection col --file file.json --upsert --upsertFields name更新导入

👤 用户权限

db.createUser({user:"name",pwd:"pass",roles:[]})创建用户
db.createUser({user:"admin",pwd:"pass",roles:["root"]})创建管理员
db.createUser({user:"name",pwd:"pass",roles:[{role:"readWrite",db:"db"}]})指定权限
db.updateUser("name",{pwd:"newpass"})修改密码
db.dropUser("name")删除用户
db.dropAllUsers()删除所有用户
db.getUsers()查看所有用户
db.getUser("name")查看用户
db.grantRolesToUser("name",["readWrite"])授权
db.revokeRolesFromUser("name",["readWrite"])撤销权限
db.createRole({role:"name",privileges:[],roles:[]})创建角色
db.dropRole("name")删除角色
db.getRoles()查看所有角色
db.auth("user","password")认证登录
db.logout()登出