Работа с MongoDB — моделирование документов (embed vs reference), паттерны схем, индексы (составные/multikey/text/TTL/wildcard), aggregation pipeline, транзакции, replica set и sharding, антипаттерны. Use при работе с MongoDB/документной БД, проектировании коллекций или оптимизации запросов и агрегаций.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add Vitammiin/agent-vorcl-flow --skill mongodb --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mongodb?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vitammiin-mongodb-agent-vorcl-flow)More formats (shields.io, HTML) on the badges page.
---
name: mongodb
description: Работа с MongoDB — моделирование документов (embed vs reference), паттерны схем, индексы (составные/multikey/text/TTL/wildcard), aggregation pipeline, транзакции, replica set и sharding, антипаттерны. Use при работе с MongoDB/документной БД, проектировании коллекций или оптимизации запросов и агрегаций.
version: 1.0.0
---
# Навык: MongoDB
Документная БД для гибкой схемы, иерархических данных и высокой скорости итераций. Схема есть — просто она в коде.
## Когда уместна (vs PostgreSQL)
- Хорошо: агрегаты, читаемые целиком (профиль, заказ с позициями), гибкие/эволюционирующие поля, высокая нагрузка на запись, гео/каталоги.
- Плохо: сильносвязанные данные с множеством JOIN, жёсткие транзакции между многими сущностями, отчётность произвольными срезами — там реляционка.
## Моделирование: embed vs reference
- **Embed** (вкладывай), если данные читаются вместе, отношение «содержит», размер ограничен. Правило: *data that is accessed together should be stored together*.
- **Reference** (ссылайся), если данные растут без границы, переиспользуются, или обновляются независимо. Связка через `_id` + `$lookup` при необходимости.
- Дизайн идёт **от запросов** (query-driven), а не от нормализации.
## Паттерны схем
- **Bucket** — группировать time-series/события в документы-корзины. **Computed** — хранить предподсчитанные агрегаты. **Subset** — во вложении держать только горячую часть, остальное в отдельной коллекции. **Extended Reference** — дублировать часто читаемые поля из связанной сущности. **Outlier** — спец-обработка редких «толстых» документов.
## Индексы
- **Составной** (порядок по правилу ESR: Equality → Sort → Range). **Multikey** — по массивам. **Text** — поиск по тексту. **TTL** — авто-удаление по времени. **Wildcard** — под непредсказуемые поля. **Partial**/**unique**.
- Проверяй планы через `explain("executionStats")`: цель — `IXSCAN`, а не `COLLSCAN`; следи за `totalDocsExamined` ≈ `nReturned`.
## Aggregation pipeline
- Этапы: `$match` (раньше всех, чтобы задействовать индекс) → `$project` → `$group` → `$sort` → `$lookup` → `$facet`.
- `$match`/`$sort` до `$group`; тяжёлые `$lookup` — точечно; следи за лимитом памяти этапа (`allowDiskUse` при необходимости).
## Транзакции и консистентность
- Многодокументные ACID-транзакции есть (replica set/sharded), но дороги — предпочитай атомарность одного документа (обновляй агрегат целиком).
- **Write concern** (`w:"majority"`) и **read concern** — под требования долговечности/консистентности.
## Масштаб
- **Replica set** — отказоустойчивость и чтение с реплик. **Sharding** — горизонтальный масштаб; ключ шардирования выбирай под равномерность и запросы (плохой ключ = горячие чанки, его не сменить дёшево).
## Антипаттерны
- Безграничные растущие массивы в документе (лимит 16MB); «реляционка на Mongo» (много коллекций + ручные JOIN); massive documents; отсутствие индексов под фактические запросы; шардинг-ключ по монотонному полю.
## Через MCP
MCP-сервер `mongodb` (`mongodb-mcp-server`) — инспекция коллекций/индексов, запросы и агрегации, `explain`. Для аудита используй режим `--readOnly`. Любые записи/дроп-операции — только с подтверждением человека.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!