Query MongoDB with automatic connection handling (direct IP or Kubernetes port-forward).
Dependencies:
pymongo package: pip install pymongokubectl (only needed if connecting to Kubernetes service via port-forward)The agent MUST ask user for MongoDB connection information before using this skill.
Required information:
mongodb://root:password@172.16.79.249:27017/?authSource=admin&replicaSet=rs0mongodb://root:password@mongodb.mongodb.svc.cluster.local:27017/?authSource=adminRecommendation: Save connection info to project's TOOLS.md for future reference:
markdown
### MongoDB
- mongo_conn_str: mongodb://user:pass@host:port/?options
- mongo_namespace: (optional - only if K8s service name)
The script automatically detects connection type based on the host in connection URI:
Address TypeConnection MethodIP address (e.g., 172.16.79.249:27017)Direct connectionK8s Service (e.g., mongodb.mongodb.svc.cluster.local:27017)kubectl port-forward
bash
# List all databases
python scripts/query_mongo.py --uri "mongodb://user:pass@host:27017/?authSource=admin" --list-dbs
# List collections in a database
python scripts/query_mongo.py --uri "mongodb://user:pass@host:27017/?authSource=admin" --db <database> --list-collections
# Execute a query
python scripts/query_mongo.py --uri "mongodb://user:pass@host:27017/?authSource=admin" --db <database> --collection <name> --query '{"status": "active"}'
# For K8s service names, specify namespace
python scripts/query_mongo.py --uri "mongodb://user:pass@svc.ns.svc.cluster.local:27017/?authSource=admin" --list-dbs --namespace mongodb
ParameterDescriptionRequired--uriMongoDB connection stringYes--list-dbsList all databasesNo--db <name>Database nameFor collection/query operations--list-collectionsList all collections in databaseNo--collection <name>Collection nameFor query operations--query <json>MongoDB query in JSON formatNo--namespace <ns>Kubernetes namespace (required if host is a K8s service name)Conditional--limit <n>Limit number of results (default: 10)No--jsonOutput raw JSONNo
bash
# List all databases
python scripts/query_mongo.py --uri "mongodb://root:pass@172.16.79.249:27017/?authSource=admin" --list-dbs
# Find active users
python scripts/query_mongo.py --uri "mongodb://root:pass@172.16.79.249:27017/?authSource=admin" --db production --collection users --query '{"status": "active"}'
# Query by ObjectId
python scripts/query_mongo.py --uri "mongodb://root:pass@172.16.79.249:27017/?authSource=admin" --db production --collection users --query '{"_id": {"$oid": "507f1f77bcf86cd799439011"}}'
# Limit results
python scripts/query_mongo.py --uri "mongodb://root:pass@172.16.79.249:27017/?authSource=admin" --db production --collection logs --query '{"level": "ERROR"}' --limit 20
# K8s service mode
python scripts/query_mongo.py --uri "mongodb://root:pass@mongodb.mongodb.svc.cluster.local:27017/?authSource=admin" --db production --collection users --query '{}' --namespace mongodb