раздел 36
MongoDB с нуля
Документоориентированная база для тех, кто открывает её впервые. Документы и коллекции, mongosh, CRUD со всеми операторами запросов и обновлений, работа с массивами. Дальше моделирование: встраивание против ссылок, денормализация, валидация схемы. Конвейер агрегации от $match до $lookup и $facet, индексы, правило ESR и explain. Финал про надёжность и масштаб: транзакции, read и write concern, replica set, шардирование, change streams и эксплуатация.
Не получилось изменить список. Попробуй ещё раз.
Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти
«MongoDB с нуля» покупается один раз и остаётся навсегда: 500 ₽. Оплата пока не подключена, доступ открывается промокодом. ввести промокод
Уроки раздела
- Что такое документоориентированная БД
- Документы, коллекции и базы
- Установка: Atlas, Docker и mongosh
- Первые команды в mongosh
- Вставка: insertOne и insertMany
- Поле _id и тип ObjectId
- Чтение и операторы запроса
- Проекции, сортировка и пагинация
- Обновление: updateOne и updateMany
- Операторы обновления полей
- Работа с массивами в документах
- upsert, replaceOne и удаление
- Встраивание против ссылок
- Связи: один-ко-многим и многие-ко-многим
- Денормализация и дублирование
- Схема, валидация и антипаттерны
- Конвейер агрегации: $match, $group, $sort
- Аккумуляторы, $project и $lookup
- Индексы: зачем и какие бывают
- explain: как понять, что делает запрос
- MongoDB из приложения: драйвер Node.js
- Транзакции, репликация и шардирование
- Проектируем схему: блог и магазин
- Итоги и что дальше
- Этапы конвейера: $match, $group, $project, $sort
- Соединения: $lookup и $unwind
- $facet, $bucket, $graphLookup
- Производительность агрегаций
- Типы индексов: составные, multikey, текстовые, геопространственные
- Правило ESR и порядок полей в составном индексе
- explain() и покрывающие запросы
- Грабли производительности
- Атомарность на уровне документа
- Многодокументные транзакции
- Read concern и Write concern
- Модели согласованности и retryable writes
- Replica Set: отказоустойчивость
- Шардирование: горизонтальное масштабирование
- Change Streams и реактивность
- Эксплуатация: бэкапы, валидация схемы, Atlas
Понятия курса
Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.
Введение в MongoDB
- Документы, коллекции и базыИерархия база, коллекция, документ, типы BSON, вложенные документы и массивы, имена полей и ограничения на размер.урок 2 · Документы, коллекции и базыопираются: урок 3
- Первые команды в mongoshshow dbs, use, show collections, db.collection, первый insert и find, mongosh как JavaScript, помощь и автодополнение.урок 4 · Первые команды в mongoshопираются: урок 5
- Установка: Atlas, Docker и mongoshБесплатный кластер Atlas, MongoDB в Docker, оболочка mongosh, строка подключения mongodb:// и mongodb+srv://, GUI Compass.урок 3 · Установка: Atlas, Docker и mongoshопираются: урок 4
- Что такое документоориентированная БДДокумент вместо строки, JSON и BSON, гибкая схема, чем MongoDB отличается от реляционной СУБД и когда её выбирают.урок 1 · Что такое документоориентированная БДопираются: урок 2
CRUD: создание и чтение
- Вставка: insertOne и insertManyinsertOne и insertMany, ответ сервера, упорядоченная и неупорядоченная вставка, учебная база магазина.урок 5 · Вставка: insertOne и insertManyопираются: урок 6
- Поле _id и тип ObjectIdОбязательное поле _id, устройство ObjectId, время создания внутри идентификатора, свои значения _id.урок 6 · Поле _id и тип ObjectIdопираются: урок 7
- Проекции, сортировка и пагинацияПроекция полей, sort, skip и limit, countDocuments, пагинация через skip и через последний _id.урок 8 · Проекции, сортировка и пагинацияопираются: урок 9
- Чтение и операторы запросаfind и findOne, сравнения $gt и $in, логика $and, $or и $not, $exists, $regex, запросы по вложенным полям и массивам.урок 7 · Чтение и операторы запросаопираются: урок 8
CRUD: обновление и удаление
- Обновление: updateOne и updateManyФильтр и документ обновления, matchedCount и modifiedCount, почему без оператора документ заменяется.урок 9 · Обновление: updateOne и updateManyопираются: урок 10
- Операторы обновления полей$set, $unset, $inc, $mul, $rename, $min, $max и $currentDate на примерах магазина.урок 10 · Операторы обновления полейопираются: урок 11
- Работа с массивами в документах$push с $each, $slice и $sort, $addToSet, $pull, $pop, позиционные $, $[] и $[elem] с arrayFilters.урок 11 · Работа с массивами в документахопираются: урок 12
- upsert, replaceOne и удалениеupsert и $setOnInsert, replaceOne, findOneAndUpdate, deleteOne и deleteMany, drop коллекции.урок 12 · upsert, replaceOne и удалениеопираются: урок 13
Моделирование данных
- Встраивание против ссылокКогда вкладывать документ, а когда хранить ссылку, данные, которые читают вместе, лимит 16 МБ.урок 13 · Встраивание против ссылокопираются: урок 14
- Денормализация и дублированиеКопия данных ради быстрого чтения, цена обновления копий, паттерны extended reference и computed.урок 15 · Денормализация и дублированиеопираются: урок 16
- Связи: один-ко-многим и многие-ко-многимОдин ко многим тремя способами, многие ко многим через массивы идентификаторов, выбор по кардинальности.урок 14 · Связи: один-ко-многим и многие-ко-многимопираются: урок 15
- Схема, валидация и антипаттерныВалидация через $jsonSchema, уровни и действия валидации, антипаттерны: бесконечные массивы, огромные документы.урок 16 · Схема, валидация и антипаттерныопираются: урок 17
Агрегация и индексы
- Аккумуляторы, $project и $lookupАккумуляторы $push, $addToSet, $first, вычисляемые поля в $project и $addFields, первое соединение через $lookup.урок 18 · Аккумуляторы, $project и $lookupопираются: урок 19
- Индексы: зачем и какие бываютcreateIndex, индекс по одному полю, уникальный индекс, getIndexes, цена индексов на запись.урок 19 · Индексы: зачем и какие бываютопираются: урок 20
- Конвейер агрегации: $match, $group, $sortКонвейер как цепочка этапов, $match, $group с $sum и $avg, $sort и $limit на базе магазина.урок 17 · Конвейер агрегации: $match, $group, $sortопираются: урок 18
- explain: как понять, что делает запросexplain и executionStats, COLLSCAN против IXSCAN, totalDocsExamined и nReturned.урок 20 · explain: как понять, что делает запросопираются: урок 21
Практика и экосистема
- Итоги и что дальшеЧто ты умеешь после первой части, карта второй части раздела, MongoDB против PostgreSQL.урок 24 · Итоги и что дальшеопираются: урок 25
- Проектируем схему: блог и магазинДве схемы от запросов: блог с комментариями и магазин с заказами, разбор решений.урок 23 · Проектируем схему: блог и магазинопираются: урок 24
- Транзакции, репликация и шардированиеОбзор: атомарность документа, многодокументные транзакции, replica set и шарды, зачем каждое.урок 22 · Транзакции, репликация и шардированиеопираются: урок 23
- MongoDB из приложения: драйвер Node.jsMongoClient, подключение и пул, CRUD из Node.js, курсоры, обработка ошибок, ODM вроде Mongoose.урок 21 · MongoDB из приложения: драйвер Node.jsопираются: урок 22
Конвейер агрегации вглубь
- $facet, $bucket, $graphLookupНесколько итогов за один проход, гистограммы через $bucket, рекурсивный обход через $graphLookup.урок 27 · $facet, $bucket, $graphLookupопираются: урок 28
- Производительность агрегацийИндексы для $match и $sort, лимит памяти 100 МБ и allowDiskUse, $out и $merge.урок 28 · Производительность агрегацийопираются: урок 29
- Соединения: $lookup и $unwind$lookup с pipeline и let, $unwind с preserveNullAndEmptyArrays, соединение заказов с книгами.урок 26 · Соединения: $lookup и $unwindопираются: урок 27
- Этапы конвейера: $match, $group, $project, $sortПорядок этапов и его цена, выражения агрегации, $set, $unset, $replaceRoot, $count.урок 25 · Этапы конвейера: $match, $group, $project, $sortопираются: урок 26
Индексы и производительность
- Грабли производительностиРегулярки без якоря, $ne и $nin, большие skip, раздутые документы, лишние индексы.урок 32 · Грабли производительностиопираются: урок 33
- Правило ESR и порядок полей в составном индексеEquality, Sort, Range: почему порядок полей решает, разбор на запросах магазина.урок 30 · Правило ESR и порядок полей в составном индексеопираются: урок 31
- Типы индексов: составные, multikey, текстовые, геопространственныеСоставной, multikey по массиву, текстовый, 2dsphere, TTL и частичный индексы.урок 29 · Типы индексов: составные, multikey, текстовые, геопространственныеопираются: урок 30
- explain() и покрывающие запросыЧтение executionStats, этапы плана, покрывающий запрос без FETCH.урок 31 · explain() и покрывающие запросыопираются: урок 32
Транзакции и согласованность
- Атомарность на уровне документаПочему изменение одного документа атомарно, модель данных как замена транзакций.урок 33 · Атомарность на уровне документаопираются: урок 34
- Многодокументные транзакцииСессии и withTransaction, ограничения, повтор при TransientTransactionError.урок 34 · Многодокументные транзакцииопираются: урок 35
- Модели согласованности и retryable writesCausal consistency, read preference, повторяемые записи и чтения.урок 36 · Модели согласованности и retryable writesопираются: урок 37
- Read concern и Write concernw: 1 и majority, j: true, read concern local, majority и snapshot, чем платим за надёжность.урок 35 · Read concern и Write concernопираются: урок 36
Репликация, шардирование и эксплуатация
- Шардирование: горизонтальное масштабированиеКлюч шардирования, чанки и балансировка, mongos, плохие ключи.урок 38 · Шардирование: горизонтальное масштабированиеопираются: урок 39
- Эксплуатация: бэкапы, валидация схемы, Atlasmongodump и mongorestore, снапшоты, мониторинг, миграции схемы, возможности Atlas.урок 40 · Эксплуатация: бэкапы, валидация схемы, Atlas
- Change Streams и реактивностьwatch() на коллекции, события изменений, resume token, когда это лучше опроса.урок 39 · Change Streams и реактивностьопираются: урок 40
- Replica Set: отказоустойчивостьПервичный и вторичные узлы, oplog, выборы, арбитр, чтение со вторичных.урок 37 · Replica Set: отказоустойчивостьопираются: урок 38