Работал ли с индексами в MongoDB

«Работал ли с индексами в MongoDB» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. В MongoDB индексы ускоряют поиск и сортировку, но замедляют запись. Основные типы:

  • Single Field — индекс по одному полю.
  • Compound — по нескольким полям (порядок важен!).
  • Multikey — для массивов (индексирует каждый элемент).
  • Text — полнотекстовый поиск.
  • TTL — автоматическое удаление документов по времени.

Пример создания индекса:

indexModel := mongo.IndexModel{
    Keys: bson.D{{"username", 1}}, // 1 - ascending, -1 - descending
}
_, err := collection.Indexes().CreateOne(context.Background(), indexModel)

Важно:

  • Избыток индексов увеличивает нагрузку на запись.
  • Используйте explain() для анализа запросов.
  • Уникальные индексы (unique: true) предотвращают дублирование.