← К оглавлению занятия

💻 Примеры

📁 Блок: MongoDB / Atlas и индексы ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя

⚡ Кратко: суть занятия

MongoDB Atlas — облачный сервис для размещения и управления MongoDB.

На занятии создаётся бесплатный Atlas account, проект и sample dataset.

Sample dataset нужен для экспериментов без ручного наполнения больших коллекций.

Индекс хранит часть данных в форме, удобной для быстрого поиска.

Без индекса MongoDB часто делает COLLSCAN, то есть просматривает коллекцию.

С индексом в плане появляется IXSCAN.

Для географического запроса по coordinates создаётся 2dsphere индекс.

Уникальный индекс по email защищает от дублей и даёт duplicate key error при повторе.

Рабочие примеры

Диапазон цены в sample_airbnb

db.listingsAndReviews.find({
  price: { $gte: 60, $lte: 90 }
})

Источник сравнивает выполнение такого запроса до и после индекса.

Создание 2dsphere индекса

db.shipwrecks.createIndex({ coordinates: "2dsphere" })

После индекса explain должен показывать индексный путь для геозапроса.

Географический запрос

db.shipwrecks.find({
  coordinates: {
    $geoWithin: {
      $centerSphere: [[-96.48616143525156, 30.714748058919618], 0.07401030386454095]
    }
  }
})

Ищет кораблекрушения в круговой области.

Проверка плана

db.shipwrecks.explain().find({
  coordinates: {
    $geoWithin: {
      $centerSphere: [[-96.48616143525156, 30.714748058919618], 0.07401030386454095]
    }
  }
})

В winningPlan ищем IXSCAN, COLLSCAN, FETCH или SORT.

Уникальный email

db.customers.createIndex({ email: 1 }, { unique: true })

Повтор email даст duplicate key error.