Освоение агрегации MongoDB: комплексное руководство с примерами кода

Среда агрегации MongoDB — это мощный инструмент для обработки и анализа данных, хранящихся в вашей базе данных MongoDB. В этом руководстве мы рассмотрим различные методы использования платформы агрегации, сопровождаемые примерами кода, которые помогут вам овладеть искусством агрегации данных в MongoDB.

  1. Соответствие.
    На этапе $matchдокументы фильтруются по заданным критериям. Он похож на метод find()в MongoDB.

Пример:

db.collection.aggregate([
  { $match: { status: "active" } }
])
  1. Группировка.
    На этапе $groupдокументы группируются на основе указанного ключа и к сгруппированным данным применяются различные агрегатные функции.

Пример:

db.collection.aggregate([
  { $group: { _id: "$category", count: { $sum: 1 } } }
])
  1. Проект:
    Этап $projectпозволяет изменять форму документов, создавать новые поля или исключать поля из набора результатов.

Пример:

db.collection.aggregate([
  { $project: { name: 1, price: 1, discountPrice: { $subtract: ["$price", "$discount"] } } }
])
  1. Сортировка.
    На этапе $sortдокументы в конвейере сортируются на основе указанного поля.

Пример:

db.collection.aggregate([
  { $sort: { price: -1 } }
])
  1. Ограничить и пропустить.
    Этапы $limitи $skipпомогают контролировать количество возвращаемых документов и включать нумерацию страниц.

Пример:

db.collection.aggregate([
  { $skip: 10 },
  { $limit: 5 }
])
  1. Раскрытие:
    На этапе $unwindполе массива деконструируется из входных документов и выводится по одному документу для каждого элемента.

Пример:

db.collection.aggregate([
  { $unwind: "$tags" }
])
  1. Поиск:
    На этапе $lookupвыполняется левое внешнее соединение между двумя коллекциями и объединяются совпадающие документы в один набор результатов.

Пример:

db.collection.aggregate([
  {
    $lookup: {
      from: "orders",
      localField: "userId",
      foreignField: "userId",
      as: "orders"
    }
  }
])
  1. Фасет.
    Этап $facetпозволяет запускать несколько конвейеров в одном конвейере, генерируя несколько наборов результатов.

Пример:

db.collection.aggregate([
  {
    $facet: {
      categoryCount: [
        { $group: { _id: "$category", count: { $sum: 1 } } }
      ],
      priceRange: [
        { $bucket: { boundaries: [0, 100, 500, 1000], default: "Other", output: { count: { $sum: 1 } } } }
      ]
    }
  }
])

В этом руководстве мы рассмотрели несколько основных методов использования платформы агрегации MongoDB, приведя примеры кода для каждого метода. Овладев этими методами агрегирования, вы сможете эффективно обрабатывать и анализировать данные MongoDB, чтобы получать ценную информацию. Поэкспериментируйте с этими методами и изучите документацию MongoDB, чтобы раскрыть весь потенциал агрегирования данных в MongoDB.