opencode-skills-collection 4.0.68 → 4.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +266 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6943 -323
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mongodb
|
|
3
|
+
description: Administer MongoDB databases. Configure replica sets, sharding, and backups.
|
|
4
|
+
Use when managing MongoDB deployments.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the relevant OS/platform tooling and privileged access where
|
|
14
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# MongoDB
|
|
21
|
+
|
|
22
|
+
Administer, optimize, and secure MongoDB NoSQL databases in development and production environments.
|
|
23
|
+
|
|
24
|
+
## When to Use
|
|
25
|
+
|
|
26
|
+
- You need a document-oriented database with flexible schemas.
|
|
27
|
+
- Your data is semi-structured or heavily nested (JSON-like documents).
|
|
28
|
+
- You need horizontal scaling through sharding.
|
|
29
|
+
- Your application benefits from rich querying and aggregation pipelines.
|
|
30
|
+
|
|
31
|
+
## Prerequisites
|
|
32
|
+
|
|
33
|
+
- Linux server (Debian/Ubuntu or RHEL-based) or Docker.
|
|
34
|
+
- Root or sudo access for package installation.
|
|
35
|
+
- MongoDB 7.x recommended for production (6.x still supported).
|
|
36
|
+
|
|
37
|
+
## Installation and Setup
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Debian / Ubuntu — MongoDB 7
|
|
41
|
+
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
|
|
42
|
+
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
|
|
43
|
+
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
|
|
44
|
+
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \
|
|
45
|
+
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
|
|
46
|
+
sudo apt update
|
|
47
|
+
sudo apt install -y mongodb-org
|
|
48
|
+
|
|
49
|
+
# Start and enable
|
|
50
|
+
sudo systemctl enable --now mongod
|
|
51
|
+
|
|
52
|
+
# Verify
|
|
53
|
+
mongosh --eval "db.version()"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Initial User Setup
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
// Connect without auth first
|
|
60
|
+
// mongosh
|
|
61
|
+
|
|
62
|
+
use admin
|
|
63
|
+
|
|
64
|
+
// Create admin user
|
|
65
|
+
db.createUser({
|
|
66
|
+
user: "admin",
|
|
67
|
+
pwd: "strong_admin_password",
|
|
68
|
+
roles: [
|
|
69
|
+
{ role: "userAdminAnyDatabase", db: "admin" },
|
|
70
|
+
{ role: "readWriteAnyDatabase", db: "admin" },
|
|
71
|
+
{ role: "clusterAdmin", db: "admin" }
|
|
72
|
+
]
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
// Create an application-scoped user
|
|
76
|
+
use mydb
|
|
77
|
+
db.createUser({
|
|
78
|
+
user: "myapp",
|
|
79
|
+
pwd: "strong_app_password",
|
|
80
|
+
roles: [{ role: "readWrite", db: "mydb" }]
|
|
81
|
+
})
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Enable authentication in `/etc/mongod.conf`:
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
security:
|
|
88
|
+
authorization: enabled
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
sudo systemctl restart mongod
|
|
93
|
+
# Now connect with credentials
|
|
94
|
+
mongosh -u myapp -p strong_app_password --authenticationDatabase mydb
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## mongosh Commands Reference
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
// Show databases and collections
|
|
101
|
+
show dbs
|
|
102
|
+
use mydb
|
|
103
|
+
show collections
|
|
104
|
+
|
|
105
|
+
// Insert documents
|
|
106
|
+
db.users.insertOne({ name: "Alice", email: "alice@example.com", age: 30 })
|
|
107
|
+
db.users.insertMany([
|
|
108
|
+
{ name: "Bob", email: "bob@example.com", age: 25 },
|
|
109
|
+
{ name: "Carol", email: "carol@example.com", age: 35 }
|
|
110
|
+
])
|
|
111
|
+
|
|
112
|
+
// Query documents
|
|
113
|
+
db.users.find({ age: { $gte: 25 } }).sort({ name: 1 }).limit(10)
|
|
114
|
+
db.users.findOne({ email: "alice@example.com" })
|
|
115
|
+
db.users.countDocuments({ age: { $gte: 30 } })
|
|
116
|
+
|
|
117
|
+
// Update
|
|
118
|
+
db.users.updateOne(
|
|
119
|
+
{ email: "alice@example.com" },
|
|
120
|
+
{ $set: { age: 31 }, $currentDate: { updatedAt: true } }
|
|
121
|
+
)
|
|
122
|
+
db.users.updateMany(
|
|
123
|
+
{ age: { $lt: 30 } },
|
|
124
|
+
{ $set: { tier: "junior" } }
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
// Delete
|
|
128
|
+
db.users.deleteOne({ email: "bob@example.com" })
|
|
129
|
+
db.users.deleteMany({ tier: "junior" })
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Indexing
|
|
133
|
+
|
|
134
|
+
```javascript
|
|
135
|
+
// Single-field index
|
|
136
|
+
db.users.createIndex({ email: 1 }, { unique: true })
|
|
137
|
+
|
|
138
|
+
// Compound index
|
|
139
|
+
db.orders.createIndex({ userId: 1, createdAt: -1 })
|
|
140
|
+
|
|
141
|
+
// Text index for search
|
|
142
|
+
db.articles.createIndex({ title: "text", body: "text" })
|
|
143
|
+
db.articles.find({ $text: { $search: "mongodb scaling" } })
|
|
144
|
+
|
|
145
|
+
// TTL index — auto-delete documents after 30 days
|
|
146
|
+
db.sessions.createIndex({ createdAt: 1 }, { expireAfterSeconds: 2592000 })
|
|
147
|
+
|
|
148
|
+
// List indexes
|
|
149
|
+
db.users.getIndexes()
|
|
150
|
+
|
|
151
|
+
// Drop an index
|
|
152
|
+
db.users.dropIndex("email_1")
|
|
153
|
+
|
|
154
|
+
// Explain a query to verify index usage
|
|
155
|
+
db.orders.find({ userId: 42 }).explain("executionStats")
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Aggregation Pipeline Examples
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
// Revenue per status
|
|
162
|
+
db.orders.aggregate([
|
|
163
|
+
{ $group: {
|
|
164
|
+
_id: "$status",
|
|
165
|
+
totalRevenue: { $sum: "$total" },
|
|
166
|
+
count: { $sum: 1 }
|
|
167
|
+
}},
|
|
168
|
+
{ $sort: { totalRevenue: -1 } }
|
|
169
|
+
])
|
|
170
|
+
|
|
171
|
+
// Top 5 customers by order value (with a join)
|
|
172
|
+
db.orders.aggregate([
|
|
173
|
+
{ $group: {
|
|
174
|
+
_id: "$userId",
|
|
175
|
+
spent: { $sum: "$total" },
|
|
176
|
+
orderCount: { $sum: 1 }
|
|
177
|
+
}},
|
|
178
|
+
{ $sort: { spent: -1 } },
|
|
179
|
+
{ $limit: 5 },
|
|
180
|
+
{ $lookup: {
|
|
181
|
+
from: "users",
|
|
182
|
+
localField: "_id",
|
|
183
|
+
foreignField: "_id",
|
|
184
|
+
as: "user"
|
|
185
|
+
}},
|
|
186
|
+
{ $unwind: "$user" },
|
|
187
|
+
{ $project: {
|
|
188
|
+
_id: 0,
|
|
189
|
+
name: "$user.name",
|
|
190
|
+
email: "$user.email",
|
|
191
|
+
spent: 1,
|
|
192
|
+
orderCount: 1
|
|
193
|
+
}}
|
|
194
|
+
])
|
|
195
|
+
|
|
196
|
+
// Daily signup trend
|
|
197
|
+
db.users.aggregate([
|
|
198
|
+
{ $group: {
|
|
199
|
+
_id: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } },
|
|
200
|
+
signups: { $sum: 1 }
|
|
201
|
+
}},
|
|
202
|
+
{ $sort: { _id: 1 } },
|
|
203
|
+
{ $limit: 30 }
|
|
204
|
+
])
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Replica Set Setup
|
|
208
|
+
|
|
209
|
+
A replica set requires a minimum of three members (or two data-bearing nodes plus an arbiter).
|
|
210
|
+
|
|
211
|
+
### Configuration File for Each Member
|
|
212
|
+
|
|
213
|
+
```yaml
|
|
214
|
+
# /etc/mongod.conf (adjust port and dbPath per member)
|
|
215
|
+
storage:
|
|
216
|
+
dbPath: /var/lib/mongodb
|
|
217
|
+
net:
|
|
218
|
+
port: 27017
|
|
219
|
+
bindIp: 0.0.0.0
|
|
220
|
+
replication:
|
|
221
|
+
replSetName: rs0
|
|
222
|
+
security:
|
|
223
|
+
authorization: enabled
|
|
224
|
+
keyFile: /etc/mongodb-keyfile
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# Generate a shared keyfile for internal auth
|
|
229
|
+
openssl rand -base64 756 > /etc/mongodb-keyfile
|
|
230
|
+
chmod 400 /etc/mongodb-keyfile
|
|
231
|
+
chown mongodb:mongodb /etc/mongodb-keyfile
|
|
232
|
+
# Copy this file to all replica set members
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Initialize the Replica Set
|
|
236
|
+
|
|
237
|
+
```javascript
|
|
238
|
+
// Connect to the first member
|
|
239
|
+
// mongosh --port 27017
|
|
240
|
+
|
|
241
|
+
rs.initiate({
|
|
242
|
+
_id: "rs0",
|
|
243
|
+
members: [
|
|
244
|
+
{ _id: 0, host: "mongo1:27017", priority: 2 },
|
|
245
|
+
{ _id: 1, host: "mongo2:27017", priority: 1 },
|
|
246
|
+
{ _id: 2, host: "mongo3:27017", priority: 1 }
|
|
247
|
+
]
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
// Check status
|
|
251
|
+
rs.status()
|
|
252
|
+
|
|
253
|
+
// View replication lag per member
|
|
254
|
+
rs.printReplicationInfo()
|
|
255
|
+
rs.printSecondaryReplicationInfo()
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Backup and Restore
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
# Full dump of all databases
|
|
262
|
+
mongodump --uri="mongodb://admin:secret@localhost:27017" --out=/backups/full_$(date +%F)
|
|
263
|
+
|
|
264
|
+
# Single database
|
|
265
|
+
mongodump --uri="mongodb://myapp:secret@localhost:27017/mydb" --out=/backups/mydb_$(date +%F)
|
|
266
|
+
|
|
267
|
+
# Compressed dump
|
|
268
|
+
mongodump --uri="mongodb://admin:secret@localhost:27017" --gzip --out=/backups/gz_$(date +%F)
|
|
269
|
+
|
|
270
|
+
# Restore all databases
|
|
271
|
+
mongorestore --uri="mongodb://admin:secret@localhost:27017" /backups/full_2025-01-15/
|
|
272
|
+
|
|
273
|
+
# Restore a single database, dropping existing data first
|
|
274
|
+
mongorestore --uri="mongodb://admin:secret@localhost:27017" \
|
|
275
|
+
--drop --db mydb /backups/mydb_2025-01-15/mydb/
|
|
276
|
+
|
|
277
|
+
# Restore compressed dump
|
|
278
|
+
mongorestore --uri="mongodb://admin:secret@localhost:27017" --gzip /backups/gz_2025-01-15/
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Docker Compose Setup
|
|
282
|
+
|
|
283
|
+
```yaml
|
|
284
|
+
# docker-compose.yml
|
|
285
|
+
version: "3.9"
|
|
286
|
+
|
|
287
|
+
services:
|
|
288
|
+
mongo1:
|
|
289
|
+
image: mongo:7
|
|
290
|
+
restart: unless-stopped
|
|
291
|
+
ports:
|
|
292
|
+
- "27017:27017"
|
|
293
|
+
environment:
|
|
294
|
+
MONGO_INITDB_ROOT_USERNAME: admin
|
|
295
|
+
MONGO_INITDB_ROOT_PASSWORD: secret
|
|
296
|
+
volumes:
|
|
297
|
+
- mongo1_data:/data/db
|
|
298
|
+
- ./mongo-keyfile:/etc/mongodb-keyfile:ro
|
|
299
|
+
command: >
|
|
300
|
+
mongod
|
|
301
|
+
--replSet rs0
|
|
302
|
+
--keyFile /etc/mongodb-keyfile
|
|
303
|
+
--bind_ip_all
|
|
304
|
+
healthcheck:
|
|
305
|
+
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
|
|
306
|
+
interval: 10s
|
|
307
|
+
timeout: 5s
|
|
308
|
+
retries: 5
|
|
309
|
+
|
|
310
|
+
mongo2:
|
|
311
|
+
image: mongo:7
|
|
312
|
+
restart: unless-stopped
|
|
313
|
+
volumes:
|
|
314
|
+
- mongo2_data:/data/db
|
|
315
|
+
- ./mongo-keyfile:/etc/mongodb-keyfile:ro
|
|
316
|
+
command: >
|
|
317
|
+
mongod
|
|
318
|
+
--replSet rs0
|
|
319
|
+
--keyFile /etc/mongodb-keyfile
|
|
320
|
+
--bind_ip_all
|
|
321
|
+
|
|
322
|
+
mongo3:
|
|
323
|
+
image: mongo:7
|
|
324
|
+
restart: unless-stopped
|
|
325
|
+
volumes:
|
|
326
|
+
- mongo3_data:/data/db
|
|
327
|
+
- ./mongo-keyfile:/etc/mongodb-keyfile:ro
|
|
328
|
+
command: >
|
|
329
|
+
mongod
|
|
330
|
+
--replSet rs0
|
|
331
|
+
--keyFile /etc/mongodb-keyfile
|
|
332
|
+
--bind_ip_all
|
|
333
|
+
|
|
334
|
+
mongo-init:
|
|
335
|
+
image: mongo:7
|
|
336
|
+
restart: "no"
|
|
337
|
+
depends_on:
|
|
338
|
+
mongo1:
|
|
339
|
+
condition: service_healthy
|
|
340
|
+
entrypoint: >
|
|
341
|
+
mongosh --host mongo1 -u admin -p secret --authenticationDatabase admin --eval '
|
|
342
|
+
rs.initiate({
|
|
343
|
+
_id: "rs0",
|
|
344
|
+
members: [
|
|
345
|
+
{ _id: 0, host: "mongo1:27017", priority: 2 },
|
|
346
|
+
{ _id: 1, host: "mongo2:27017", priority: 1 },
|
|
347
|
+
{ _id: 2, host: "mongo3:27017", priority: 1 }
|
|
348
|
+
]
|
|
349
|
+
})
|
|
350
|
+
'
|
|
351
|
+
|
|
352
|
+
volumes:
|
|
353
|
+
mongo1_data:
|
|
354
|
+
mongo2_data:
|
|
355
|
+
mongo3_data:
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# Generate keyfile before starting
|
|
360
|
+
openssl rand -base64 756 > mongo-keyfile
|
|
361
|
+
chmod 400 mongo-keyfile
|
|
362
|
+
|
|
363
|
+
docker compose up -d
|
|
364
|
+
|
|
365
|
+
# Connect
|
|
366
|
+
mongosh "mongodb://admin:secret@127.0.0.1:27017/?replicaSet=rs0&authSource=admin"
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
## Monitoring Queries
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
// Server status summary
|
|
373
|
+
db.serverStatus().connections
|
|
374
|
+
db.serverStatus().opcounters
|
|
375
|
+
|
|
376
|
+
// Current operations (look for long-running queries)
|
|
377
|
+
db.currentOp({ secs_running: { $gte: 5 } })
|
|
378
|
+
|
|
379
|
+
// Collection stats
|
|
380
|
+
db.orders.stats()
|
|
381
|
+
|
|
382
|
+
// Index sizes
|
|
383
|
+
db.orders.stats().indexSizes
|
|
384
|
+
|
|
385
|
+
// Profiler — log slow queries (> 100ms)
|
|
386
|
+
db.setProfilingLevel(1, { slowms: 100 })
|
|
387
|
+
db.system.profile.find().sort({ ts: -1 }).limit(5)
|
|
388
|
+
|
|
389
|
+
// Replica set lag
|
|
390
|
+
rs.printSecondaryReplicationInfo()
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
## Configuration Tuning
|
|
394
|
+
|
|
395
|
+
```yaml
|
|
396
|
+
# /etc/mongod.conf — production recommendations
|
|
397
|
+
storage:
|
|
398
|
+
dbPath: /var/lib/mongodb
|
|
399
|
+
journal:
|
|
400
|
+
enabled: true
|
|
401
|
+
wiredTiger:
|
|
402
|
+
engineConfig:
|
|
403
|
+
cacheSizeGB: 4 # ~50% of RAM, leave rest for OS cache
|
|
404
|
+
collectionConfig:
|
|
405
|
+
blockCompressor: snappy
|
|
406
|
+
net:
|
|
407
|
+
port: 27017
|
|
408
|
+
bindIp: 0.0.0.0
|
|
409
|
+
maxIncomingConnections: 500
|
|
410
|
+
operationProfiling:
|
|
411
|
+
mode: slowOp
|
|
412
|
+
slowOpThresholdMs: 100
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
## Troubleshooting
|
|
416
|
+
|
|
417
|
+
| Symptom | Likely Cause | Fix |
|
|
418
|
+
|---|---|---|
|
|
419
|
+
| `COLLSCAN` in explain output | Missing index on queried field | Create an appropriate index |
|
|
420
|
+
| Replica member stuck in `RECOVERING` | Oplog window exceeded | Resync by removing data and restarting the member |
|
|
421
|
+
| `too many open files` | OS file descriptor limit too low | Set `ulimit -n 65535` in service file |
|
|
422
|
+
| High memory usage | WiredTiger cache too large | Reduce `cacheSizeGB` in config |
|
|
423
|
+
| Slow aggregation pipelines | No index on `$match` stage fields | Add index; place `$match` as early as possible in pipeline |
|
|
424
|
+
| Authentication failure | Wrong `authenticationDatabase` | Specify `--authenticationDatabase admin` for admin users |
|
|
425
|
+
|
|
426
|
+
## Related Skills
|
|
427
|
+
|
|
428
|
+
- redis (`redis`) - Caching layer in front of MongoDB
|
|
429
|
+
- database-backups (`database-backups`) - Automated backup strategies
|
|
430
|
+
- postgresql (`postgresql-devsec`) - Alternative relational database
|
|
431
|
+
|
|
432
|
+
## Limitations
|
|
433
|
+
|
|
434
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
435
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
436
|
+
|