📦 MongoDB Admin Toolkit — MongoDB全能管理

v1.0.0

一站式MongoDB运维工具,涵盖连接管理、备份/恢复、性能分析、索引与账户管理等常用操作,帮助开发者高效维护数据库。

0· 80·0 当前·0 累计
qoohsuan 头像by @qoohsuan (Qoohsuan)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/26
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的说明、所需工具与示例均围绕MongoDB管理工具集展开,未索取无关凭据或安装任意代码。
评估建议
这是一份纯指令型MongoDB管理指南,内容内在一致。使用前请注意:1) 勿在公开对话粘贴真实凭据,生产凭据需先行审查再执行示例命令;2) 先在安全环境审核任何会删除或恢复数据的命令(dropDatabase、dropIndex、mongorestore);3) 确保备份目录(/var/backups)权限正确,清理命令与命名规则匹配后再自动运行;4) 优先使用最小权限账户与TLS/SSL远程连接;5) 如需让智能体操作系统,请仅通过平台认可的安全机制提供凭据——本技能自身不请求或管理凭据。总体来看技能逻辑清晰,执行DB管理命令时仍需常规运维谨慎。...
详细分析 ▾
用途与能力
SKILL.md聚焦MongoDB管理(mongosh、mongodump、mongorestore、用户/索引管理、副本集)。清单与说明中无任何索要无关服务、二进制或凭据的内容,与声明目的相符。
指令范围
指令包含破坏性/管理操作(dropDatabase、dropIndex、createUser、changeUserPassword、killOp)及在URI中嵌入凭据的生产连接示例。对管理工具属正常,但用户需审阅,避免盲目执行示例。指令未引导智能体读取无关文件或向外端点泄露数据。
安装机制
无安装规范或外部下载(仅指令)。安装器不会向磁盘写入代码,降低安装风险。
凭证需求
技能清单不要求环境变量或凭据。示例命令展示数据库用户名/密码及连接字符串(该领域常见),但技能未索要无关密钥或系统高权凭据。
持久化与权限
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.longxiaskill.com

技能文档

完整的 MongoDB 管理工具包,涵盖数据库管理、性能优化、备份/还原操作以及副本集管理。适用于本地与远程 MongoDB 实例。

先决条件

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

使用方式

连接管理

基本连接:

# Local instance
mongosh
# Remote instance
mongosh "mongodb://localhost:27017/mydb"
mongosh "mongodb://user:pass@host:27017/mydb"
# With authentication
mongosh --host localhost --port 27017 --username admin --password --authenticationDatabase admin
# SSL/TLS connection
mongosh "mongodb://host:27017/mydb?ssl=true"

连接字符串示例:

# Local development
mongosh "mongodb://localhost:27017/clawd_memory_db"
# Remote with auth
mongosh "mongodb://dbuser:password@10.0.0.100:27017/production_db?authSource=admin"
# Replica set
mongosh "mongodb://node1:27017,node2:27017,node3:27017/mydb?replicaSet=rs0"
# MongoDB Atlas
mongosh "mongodb+srv://username:password@cluster0.abcde.mongodb.net/mydb"

数据库操作

数据库管理:

// List databases
show dbs
// Switch to database
use mydb
// Drop database
db.dropDatabase()
// Database stats
db.stats()
db.runCommand({dbStats: 1, scale: 10241024}) // MB scale

集合操作:

// List collections
show collections
// Create collection
db.createCollection("users")
db.createCollection("logs", {capped: true, size: 10000000, max: 1000})
// Drop collection
db.users.drop()
// Collection stats
db.users.stats()

备份与还原

使用 mongodump/mongorestore:

# Backup entire database
mongodump --host localhost:27017 --db mydb --out /backup/$(date +%Y%m%d)
# Backup with authentication
mongodump --host localhost:27017 --username admin --password --authenticationDatabase admin --db mydb --out /backup/
# Backup specific collection
mongodump --host localhost:27017 --db mydb --collection users --out /backup/
# Compressed backup
mongodump --host localhost:27017 --db mydb --gzip --out /backup/
# Restore database
mongorestore --host localhost:27017 --db mydb /backup/mydb
# Restore with different name
mongorestore --host localhost:27017 --db newdb /backup/mydb
# Restore specific collection
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"

# Create backup directory mkdir -p $BACKUP_DIR/$DATE

# Perform backup mongodump --host localhost:27017 --db $DB_NAME --gzip --out $BACKUP_DIR/$DATE

# Check if backup successful if [ $? -eq 0 ]; then echo "✅ Backup completed: $BACKUP_DIR/$DATE" # Create symlink to latest ln -sfn $BACKUP_DIR/$DATE $BACKUP_DIR/latest # Cleanup old backups (keep 7 days) find $BACKUP_DIR -type d -name "2" -mtime +7 -exec rm -rf {} \; else echo "❌ Backup failed!" exit 1 fi

性能分析

查询性能:

// Enable profiling
db.setProfilingLevel(2) // profile all operations
db.setProfilingLevel(1, {slowms: 100}) // profile slow queries only
// View slow queries
db.system.profile.find().limit(5).sort({ts: -1}).pretty()
// Find slow queries
db.system.profile.find({millis: {$gt: 100}}).sort({ts: -1}).pretty()
// Disable profiling
db.setProfilingLevel(0)

服务器状态与指标:

// Server status
db.serverStatus()
// Current operations
db.currentOp()
// Kill long-running operation
db.killOp(opid)
// Database statistics
db.stats()
// Collection statistics
db.users.stats()

连接监控:

// Current connections
db.serverStatus().connections
// Active connections
db.runCommand({connPoolStats: 1})
// List current sessions
db.aggregate([{$listSessions: {}}])

索引管理

创建索引:

// Single field index
db.users.createIndex({email: 1})
// Compound index
db.users.createIndex({email: 1, createdAt: -1})
// Text search index
db.articles.createIndex({title: "text", content: "text"})
// Partial index
db.users.createIndex({email: 1}, {partialFilterExpression: {active: true}})
// TTL index (auto-expire documents)
db.sessions.createIndex({expireAt: 1}, {expireAfterSeconds: 0})
// Background index creation
db.users.createIndex({email: 1}, {background: true})

索引分析:

// List indexes
db.users.getIndexes()
// Index usage statistics
db.users.aggregate([{$indexStats: {}}])
// Explain query execution
db.users.find({email: "test@example.com"}).explain("executionStats")
// Drop index
db.users.dropIndex({email: 1})
db.users.dropIndex("email_1")

用户管理

数据库用户:

// Create admin user
db.createUser({
  user: "admin",
  pwd: "securepassword",
  roles: [{role: "userAdminAnyDatabase", db: "admin"}]
})
// Create database-specific user
db.createUser({
  user: "appuser",
  pwd: "apppassword",
  roles: [
    {role: "readWrite", db: "mydb"},
    {role: "read", db: "analytics"}
  ]
})
// Update user
db.updateUser("appuser", {
  roles: [{role: "dbOwner", db: "mydb"}]
})
// Change password
db.changeUserPassword("appuser", "newpassword")
// List users
db.getUsers()
// Drop user
db.dropUser("appuser")

自定义角色:

// Create custom role
db.createRole({
  role: "dataAnalyst",
  privileges: [
    {resource: {db: "analytics", collection: ""}, actions: ["find", "listIndexes"]},
    {resource: {db: "logs", collection: ""}, actions: ["find"]}
  ],
  roles: []
})
// Grant role to user
db.grantRolesToUser("analyst", ["dataAnalyst"])

副本集管理

初始化副本集:

// Initialize replica set
rs.initiate({
  _id: "rs0",
  members: [
    {_id: 0, host: "mongo1:27017"},
    {_id: 1, host: "mongo2:27017"},
    {_id: 2, host: "mongo3:27017"}
  ]
})

副本集操作:

// Check replica set status
rs.status()
// Check configuration
rs.conf()
// Add member
rs.add("mongo4:27017")
// Remove member
rs.remove("mongo4:27017")
// Step down primary
rs.stepDown()
// Force reconfiguration
rs.reconfig(config, {force: true})

数据导入/导出

JSON 导入/导出:

# Export collection to JSON
mongoexport --host localhost:27017 --db mydb --collection users --out users.json
# Export with query
mongoexport --host localhost:27017 --db mydb --collection users --query '{"active": true}' --out active_users.json
# Import JSON
mongoimport --host localhost:27017 --db mydb --collection users --file users.json
# Import CSV
mongoimport --host localhost:27017 --db mydb --collection users --type csv --headerline --file users.csv

维护任务

数据库维护:

// Compact collection
db.users.compact()
// Repair database
db.repairDatabase()
// Validate collection
db.users.validate()
// Re-index collection
db.users.reIndex()

清理操作:

# Clean up orphaned data
mongosh --eval "db.runCommand({cleanupOrphaned: 'mydb.users'})"
# Compact all collections
mongosh mydb --eval "db.runCommand({compact: 'users', force: true})"

监控脚本

健康检查脚本:

#!/bin/bash
# mongodb-health.sh

echo "MongoDB Health Check - $(date)" echo "=================================="

# Check if MongoDB is running if ! pgrep mongod > /dev/null; then echo "❌ MongoDB is not running" exit 1 fi

# Check connection 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

# Check disk space 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

# Check memory usage MEMORY_USAGE=$(mongosh --quiet --eval "JSON.stringify(db.serverStatus().mem)" | jq '.resident') echo "📊 Memory usage: ${MEMORY_USAGE}MB"

# Check active connections CONNECTIONS=$(mongosh --quiet --eval "db.serverStatus().connections.current") echo "🔌 Active connections: $CONNECTIONS"

echo "Health check completed."

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

数据来源ClawHub ↗ · 中文优化:龙虾技能库