🍃 Mongo Db Client Tool — MongoDB客户端

v1.0.0

通过JSON指令远程连接MongoDB,执行文档级CRUD、聚合管道、索引管理等操作,无需本地安装数据库即可快速读写数据。

0· 0·0 当前·0 累计
by @jithinm·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/3
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的代码、说明与需求与其声明的用途一致:提供一个基于Python的MongoDB CLI客户端;未请求无关凭据或安装意外工具。
评估建议
该技能看起来确实只做它声明的事:通过Python CLI运行MongoDB操作。安装前,请确认代理将连接的MongoDB实例(MONGO_URI或config.json),并避免在未审查的情况下指向生产数据。对任何自动代理授予包含'confirm': true的操作权限时需谨慎——这些标志是防止意外破坏性操作(drop/delete)的保护措施。建议在隔离环境中运行提供的安装脚本(它会创建.venv并pip安装pymongo)。如需更高保障,请检查完整的mongo_client.py(已包含)并在非生产数据库上测试。...
详细分析 ▾
用途与能力
名称/描述(MongoDB客户端)与提供的文件一致:一个Python CLI(mongo_client.py)、安装pymongo的本地设置脚本,以及配置MONGO_URI或config.json的文档。所需二进制文件(python3)和记录的环境变量与声明用途相符。
指令范围
SKILL.md将操作限制为通过JSON负载执行MongoDB操作,并记录了连接解析与破坏性操作保护措施(drop/delete需要'confirm'标志)。注意:客户端会在技能目录和工作区路径(Path.cwd()候选)中查找config.json,因此如果存在,可能会拾取技能目录外的配置——为方便而设计,但需留意。
安装机制
没有远程任意下载。设置是本地shell脚本,创建venv并从PyPI pip安装pymongo(Python技能所需)。INSTALL-UBUNTU.md引用官方MongoDB仓库以安装本地服务器。这些操作标准且与用途相称。
凭证需求
声明并使用的环境变量仅限于MongoDB连接设置(MONGO_URI、MONGO_DB、MONGO_HOST、MONGO_PORT、MONGO_USER、MONGO_PASSWORD)。未请求无关机密或服务凭据。
持久化与权限
技能未强制包含(always: false)。它在自身scripts目录下创建venv,不修改其他技能或系统级代理设置。技能可被自主调用(平台默认),这对执行数据库操作的技能是预期的——用户应控制何时发送破坏性负载。
安全有层次,运行前请审查代码。

License

MIT-0

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

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/3
无害

安装命令

点击复制
官方npx clawhub@latest install mongo-db
镜像加速npx clawhub@latest install mongo-db --registry https://cn.longxiaskill.com

技能文档

当代理需要向 MongoDB 读取或写入持久化数据时,可使用此技能。所有操作均通过 Python CLI 脚本执行,并返回 JSON 输出。

使用场景

  • 用户要求“保存到数据库”、“存储到 Mongo”或“从 MongoDB 检索”
  • 代理需要在会话之间持久化数据(预算、交易、摘要、关注列表)
  • 代理需要查询、过滤或聚合已存储的记录
  • 需要设置新的集合或 schema(验证器)

首次设置

本地 MongoDB: 如果需要在 Ubuntu 上安装 MongoDB,请参阅 INSTALL-UBUNTU.md。对于 Atlas,请在配置或环境变量中使用您的连接字符串。从工作区根目录运行一次设置脚本,以创建虚拟环境并安装 pymongo

bash skills/mongo-db/scripts/setup.sh

这将创建 skills/mongo-db/scripts/.venv/ 并在其中安装依赖项。设置完成后,使用 venv 解释器调用客户端:

skills/mongo-db/scripts/.venv/bin/python3 skills/mongo-db/scripts/mongo_client.py ''

配置

连接按以下顺序解析(优先匹配):

选项 1 — 环境变量(推荐)

MONGO_URI=mongodb+srv://user:password@cluster.mongodb.net/mydb
MONGO_DB=mydb  # 如果数据库在 URI 中,则此项可选

选项 2 — config.json(本地文件,已被 gitignore)

复制示例并填写您的值:

cp skills/mongo-db/config.example.json skills/mongo-db/config.json

编辑 skills/mongo-db/config.json

{
  "uri": "mongodb://localhost:27017",
  "database": "mydb",
  "username": "optional",
  "password": "optional"
}

选项 3 — 单独的环境变量

MONGO_HOST=localhost
MONGO_PORT=27017
MONGO_USER=myuser
MONGO_PASSWORD=mypassword
MONGO_DB=mydb

CLI 接口

所有操作都使用单个 JSON 负载参数:

PYTHON=skills/mongo-db/scripts/.venv/bin/python3
$PYTHON skills/mongo-db/scripts/mongo_client.py ''

负载 schema:

{
  "operation": "",
  "database": "<可选覆盖>",
  "collection": "<集合名称>",
  ...操作特定字段
}

输出始终为 JSON:{"success": true, ...result_fields}{"success": false, "error": "..."}


操作参考

列出数据库

{"operation": "list_databases"}

列出数据库中的集合

{"operation": "list_collections", "database": "mydb"}

创建集合(可选带 JSON Schema 验证器)

{
  "operation": "create_collection",
  "database": "mydb",
  "collection": "budgets",
  "validator": {
    "$jsonSchema": {
      "bsonType": "object",
      "required": ["period", "income"],
      "properties": {
        "period": {"bsonType": "string"},
        "income": {"bsonType": "number"}
      }
    }
  }
}

删除集合

删除前务必确认用户。需提供 "confirm": true

{"operation": "drop_collection", "database": "mydb", "collection": "old_data", "confirm": true}

创建索引

{
  "operation": "create_index",
  "database": "mydb",
  "collection": "transactions",
  "keys": {"date": 1, "category": 1},
  "unique": false
}

查询文档

{
  "operation": "find",
  "database": "mydb",
  "collection": "transactions",
  "filter": {"category": "groceries"},
  "projection": {"_id": 0, "date": 1, "amount": 1, "description": 1},
  "sort": {"date": -1},
  "limit": 20
}

查询单个文档

{
  "operation": "find_one",
  "database": "mydb",
  "collection": "transactions",
  "filter": {"id": "txn_20260131_0001"}
}

统计文档数量

{
  "operation": "count",
  "database": "mydb",
  "collection": "transactions",
  "filter": {"type": "expense"}
}

插入单个文档

{
  "operation": "insert_one",
  "database": "mydb",
  "collection": "transactions",
  "document": {
    "id": "txn_20260201_0001",
    "date": "2026-02-01",
    "description": "Supermarket",
    "amount": -85.50,
    "category": "groceries",
    "type": "expense"
  }
}

插入多个文档

{
  "operation": "insert_many",
  "database": "mydb",
  "collection": "transactions",
  "documents": [
    {"date": "2026-02-01", "description": "Coffee", "amount": -4.50, "category": "dining"},
    {"date": "2026-02-02", "description": "Salary", "amount": 5000, "category": "income"}
  ]
}

更新单个文档

{
  "operation": "update_one",
  "database": "mydb",
  "collection": "budget",
  "filter": {"period": "monthly"},
  "update": {"$set": {"income": 5500, "last_updated": "2026-02-01"}},
  "upsert": false
}

更新多个文档

{
  "operation": "update_many",
  "database": "mydb",
  "collection": "transactions",
  "filter": {"category": "food"},
  "update": {"$set": {"category": "groceries"}}
}

替换单个文档

{
  "operation": "replace_one",
  "database": "mydb",
  "collection": "budget",
  "filter": {"period": "monthly"},
  "replacement": {"period": "monthly", "income": 5500, "currency": "USD"},
  "upsert": true
}

删除单个文档

删除前务必确认用户。需提供 "confirm": true

{
  "operation": "delete_one",
  "database": "mydb",
  "collection": "transactions",
  "filter": {"id": "txn_20260131_0001"},
  "confirm": true
}

删除多个文档

删除前务必确认用户。需提供 "confirm": true

{
  "operation": "delete_many",
  "database": "mydb",
  "collection": "transactions",
  "filter": {"source_file": "january_statement.pdf"},
  "confirm": true
}

聚合

{
  "operation": "aggregate",
  "database": "mydb",
  "collection": "transactions",
  "pipeline": [
    {"$match": {"type": "expense"}},
    {"$group": {"_id": "$category", "total": {"$sum": "$amount"}, "count": {"$sum": 1}}},
    {"$sort": {"total": 1}}
  ]
}

注意事项

  • 破坏性操作delete_onedelete_manydrop_collection)需要在负载中提供 "confirm": true。在包含此标志之前,务必询问用户确认。
  • ObjectId 字段在所有输出中序列化为字符串。
  • 数据库覆盖:负载中的 "database" 字段可覆盖该次调用的默认数据库配置(来自 config/环境变量)。
  • Schema 验证:使用带 "validator"create_collection 在 MongoDB 级别强制执行文档结构。这是写入结构化数据的代理的推荐方法(例如 finance-budget 代理的预算和交易集合)。
  • Upsert 模式:对于类似配置的文档(每种类型一个),使用带 "upsert": truereplace_one 以原子方式创建或替换。
  • 如果缺少 pymongo,请重新运行 bash skills/mongo-db/scripts/setup.sh
数据来源ClawHub ↗ · 中文优化:龙虾技能库