首页龙虾技能列表 › MongoDB Admin Toolkit — MongoDB 管理工具包

MongoDB Admin Toolkit — MongoDB 管理工具包

v1.0.0

全面 MongoDB 管理工具包,涵盖连接管理、备份/恢复、性能分析、索引管理、用户管理、复制集配置等,支持 mongosh 和传统 mongo shell 命令,适用于本地和远程 MongoDB 实例。

0· 80·0 当前·0 累计
by @qoohsuan (Qoohsuan)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
技能的指令、所需工具和示例与 MongoDB 管理工具包一致,不请求无关凭证或安装任意代码。
评估建议
这是一个仅包含指令的 MongoDB 管理指南,内部逻辑一致。使用前建议:(1) 不要在公共聊天中粘贴真实凭证或未经审查使用生产凭证运行示例命令;(2) 在安全环境中先审查删除或恢复数据的命令;(3) 确保备份目录权限合适,清理命令与命名方案匹配;(4) 优先使用最小权限账户和 TLS/SSL 远程连接;(5) 如果需要代理在系统上执行操作,请仅通过安全、平台批准的密钥机制提供凭证。技能逻辑一致,但执行 DB 管理命令时应谨慎。...
详细分析 ▾
用途与能力
SKILL.md 集中于 MongoDB 管理(mongosh、mongodump、mongorestore、用户/索引管理、复制集)。清单或指令中没有请求无关服务、二进制文件或凭证,与声明的目的相符。
指令范围
指令包括破坏性/管理操作(dropDatabase、dropIndex、createUser、changeUserPassword、killOp)和包含凭证的生产连接示例。对于管理工具包这是预期的,但用户必须审查并避免盲目运行示例。指令不指示代理读取无关文件或将数据泄露到外部端点。
安装机制
没有安装规格或外部下载(仅指令)。没有代码由安装程序写入磁盘,降低了安装风险。
凭证需求
技能的清单中不需要环境变量或凭证。示例命令显示使用数据库用户名/密码和连接字符串(该领域正常),但技能不请求无关机密或高级系统凭证。
持久化与权限
always 为 false,技能由用户调用。它不请求持久系统存在或修改其他技能或系统范围的代理设置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/26

初始发布:完整 MongoDB 管理工具包

● 无害

安装命令 点击复制

官方npx clawhub@latest install mongodb-admin-toolkit
镜像加速npx clawhub@latest install mongodb-admin-toolkit --registry https://cn.clawhub-mirror.com

技能文档

完整的 MongoDB 管理工具包,用于数据库管理、性能优化、备份/恢复操作和副本集管理。支持本地和远程 MongoDB 实例。

前置条件

  • 已安装 MongoDB(服务器和/或客户端工具)
  • mongosh(MongoDB Shell)或传统 mongo 客户端
  • mongodumpmongorestore 工具
  • 适当的数据库权限
  • 目标 MongoDB 实例的网络访问权限

使用方法

连接管理

基本连接:

# 本地实例
mongosh
# 远程实例
mongosh "mongodb://localhost:27017/mydb"
mongosh "mongodb://user:pass@host:27017/mydb"
# 带认证
mongosh --host localhost --port 27017 --username admin --password --authenticationDatabase admin
# SSL/TLS 连接
mongosh "mongodb://host:27017/mydb?ssl=true"

连接字符串示例:

# 本地开发
mongosh "mongodb://localhost:27017/clawd_memory_db"
# 远程带认证
mongosh "mongodb://dbuser:password@10.0.0.100:27017/production_db?authSource=admin"
# 副本集
mongosh "mongodb://node1:27017,node2:27017,node3:27017/mydb?replicaSet=rs0"
# MongoDB Atlas
mongosh "mongodb+srv://username:password@cluster0.abcde.mongodb.net/mydb"

数据库操作

数据库管理:

// 列出数据库
show dbs
// 切换到数据库
use mydb
// 删除数据库
db.dropDatabase()
// 数据库统计信息
db.stats()
db.runCommand({dbStats: 1, scale: 10241024}) // MB 比例

集合操作:

// 列出集合
show collections
// 创建集合
db.createCollection("users")
db.createCollection("logs", {capped: true, size: 10000000, max: 1000})
// 删除集合
db.users.drop()
// 集合统计信息
db.users.stats()

备份和恢复

使用 mongodump/mongorestore:

# 备份整个数据库
mongodump --host localhost:27017 --db mydb --out /backup/$(date +%Y%m%d)
# 带认证备份
mongodump --host localhost:27017 --username admin --password --authenticationDatabase admin --db mydb --out /backup/
# 备份特定集合
mongodump --host localhost:27017 --db mydb --collection users --out /backup/
# 压缩备份
mongodump --host localhost:27017 --db mydb --gzip --out /backup/
# 恢复数据库
mongorestore --host localhost:27017 --db mydb /backup/mydb
# 恢复为不同名称
mongorestore --host localhost:27017 --db newdb /backup/mydb
# 恢复特定集合
mongorestore --host localhost:27017 --db mydb --collection users /backup/mydb/users.bson

自动化备份脚本:

#!/bin/bash
# mongodb-backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/mongodb"
DB_NAME="clawd_memory_db"

echo "Starting MongoDB backup: $DATE"

# 创建备份目录 mkdir -p $BACKUP_DIR/$DATE

# 执行备份 mongodump --host localhost:27017 --db $DB_NAME --gzip --out $BACKUP_DIR/$DATE

# 检查备份是否成功 if [ $? -eq 0 ]; then echo "✅ Backup completed: $BACKUP_DIR/$DATE" # 创建指向最新备份的符号链接 ln -sfn $BACKUP_DIR/$DATE $BACKUP_DIR/latest # 清理旧备份(保留 7 天) find $BACKUP_DIR -type d -name "2" -mtime +7 -exec rm -rf {} \; else echo "❌ Backup failed!" exit 1 fi

性能分析

查询性能:

// 启用性能分析
db.setProfilingLevel(2) // 分析所有操作
db.setProfilingLevel(1, {slowms: 100}) // 仅分析慢查询

// 查看慢查询 db.system.profile.find().limit(5).sort({ts: -1}).pretty() // 查找慢查询 db.system.profile.find({millis: {$gt: 100}}).sort({ts: -1}).pretty()

// 禁用性能分析 db.setProfilingLevel(0)

服务器状态和指标:

// 服务器状态
db.serverStatus()
// 当前操作
db.currentOp()
// 终止长时间运行的操作
db.killOp(opid)
// 数据库统计信息
db.stats()
// 集合统计信息
db.users.stats()

连接监控:

// 当前连接数
db.serverStatus().connections
// 活跃连接
db.runCommand({connPoolStats: 1})
// 列出当前会话
db.aggregate([{$listSessions: {}}])

索引管理

创建索引:

// 单字段索引
db.users.createIndex({email: 1})
// 复合索引
db.users.createIndex({email: 1, createdAt: -1})
// 全文搜索索引
db.articles.createIndex({title: "text", content: "text"})
// 部分索引
db.users.createIndex({email: 1}, {partialFilterExpression: {active: true}})
// TTL 索引(自动过期文档)
db.sessions.createIndex({expireAt: 1}, {expireAfterSeconds: 0})
// 后台创建索引
db.users.createIndex({email: 1}, {background: true})

索引分析:

// 列出索引
db.users.getIndexes()
// 索引使用统计
db.users.aggregate([{$indexStats: {}}])
// 解释查询执行
db.users.find({email: "test@example.com"}).explain("executionStats")
// 删除索引
db.users.dropIndex({email: 1})
db.users.dropIndex("email_1")

用户管理

数据库用户:

// 创建管理员用户
db.createUser({
    user: "admin",
    pwd: "securepassword",
    roles: [{role: "userAdminAnyDatabase", db: "admin"}]
})

// 创建数据库特定用户 db.createUser({ user: "appuser", pwd: "apppassword", roles: [ {role: "readWrite", db: "mydb"}, {role: "read", db: "analytics"} ] })

// 更新用户 db.updateUser("appuser", { roles: [{role: "dbOwner", db: "mydb"}] })

// 更改密码 db.changeUserPassword("appuser", "newpassword")

// 列出用户 db.getUsers()

// 删除用户 db.dropUser("appuser")

自定义角色:

// 创建自定义角色
db.createRole({
    role: "dataAnalyst",
    privileges: [
        {resource: {db: "analytics", collection: ""}, actions: ["find", "listIndexes"]},
        {resource: {db: "logs", collection: ""}, actions: ["find"]}
    ],
    roles: []
})

// 授予用户角色 db.grantRolesToUser("analyst", ["dataAnalyst"])

副本集管理

初始化副本集:

// 初始化副本集
rs.initiate({
    _id: "rs0",
    members: [
        {_id: 0, host: "mongo1:27017"},
        {_id: 1, host: "mongo2:27017"},
        {_id: 2, host: "mongo3:27017"}
    ]
})

副本集操作:

// 检查副本集状态
rs.status()
// 检查配置
rs.conf()
// 添加成员
rs.add("mongo4:27017")
// 移除成员
rs.remove("mongo4:27017")
// 降级主节点
rs.stepDown()
// 强制重新配置
rs.reconfig(config, {force: true})

数据导入/导出

JSON 导入/导出:

# 导出集合到 JSON
mongoexport --host localhost:27017 --db mydb --collection users --out users.json
# 带查询条件导出
mongoexport --host localhost:27017 --db mydb --collection users --query '{"active": true}' --out active_users.json
# 导入 JSON
mongoimport --host localhost:27017 --db mydb --collection users --file users.json
# 导入 CSV
mongoimport --host localhost:27017 --db mydb --collection users --type csv --headerline --file users.csv

维护任务

数据库维护:

// 压缩集合
db.users.compact()
// 修复数据库
db.repairDatabase()
// 验证集合
db.users.validate()
// 重新索引集合
db.users.reIndex()

清理操作:

# 清理孤立数据
mongosh --eval "db.runCommand({cleanupOrphaned: 'mydb.users'})"
# 压缩所有集合
mongosh mydb --eval "db.runCommand({compact: 'users', force: true})"

监控脚本

健康检查脚本:

#!/bin/bash
# mongodb-health.sh
echo "MongoDB Health Check - $(date)"
echo "=================================="

# 检查 MongoDB 是否运行 if ! pgrep mongod > /dev/null; then echo "❌ MongoDB is not running" exit 1 fi

# 检查连接 mongosh --eval "db.adminCommand('ping')" > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "✅ MongoDB connection: OK" else echo "❌ MongoDB connection: FAILED" exit 1 fi

# 检查磁盘空间 DISK_USAGE=$(df -h /var/lib/mongodb | tail -1 | awk '{print $5}' | sed 's/%//') if [ $DISK_USAGE -gt 80 ]; then echo "⚠️ Disk usage: ${DISK_USAGE}% (High)" else echo "✅ Disk usage: ${DISK_USAGE}%" fi

# 检查内存使用 MEMORY_USAGE=$(mongosh --quiet --eval "JSON.stringify(db.serverStatus().mem)" | jq '.resident') echo "📊 Memory usage: ${MEMORY_USAGE}MB"

# 检查活跃连接数 CONNECTIONS=$(mongosh --quiet --eval "db.serverStatus().connections.current") echo "🔌 Active connections: $CONNECTIONS"

echo "Health check completed."

此技能为开发和生产环境提供全面的 MongoDB 管理能力。

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务