Агрегация MongoDB: $type и $project

Оператор $type в агрегации MongoDB используется совместно со стадией $project для определения типов данных полей в документах коллекции.

Оператор $type в стадии $project

$type — унарный оператор, применяемый к каждому документу внутри стадии $project.

В примере используется коллекция persons. Стадия $project оставляет поля _id, name, и добавляет icolorType и ageType. Значения этих полей — объекты, содержащие унарный оператор $type со ссылкой на соответствующее поле входных документов.

Таким образом, тип данных каждого значения поля icolor определяется и возвращается в поле icolorType (например, «string»). Аналогично для ageType (например, «int» — 32-битное целое число). Результат содержит поля _id, name, icolorType и ageType для каждого из 1000 документов исходной коллекции.

Практический пример в MongoDB Shell

Пример в MongoDB Shell демонстрирует стадию $project, оставляющую поля name и _id и добавляющую поля с типами данных для name, age, text и company:

{
  $project: {
    _id: 1,
    name: 1,
    nameType: { $type: "$name" },
    ageType: { $type: "$age" },
    textType: { $type: "$text" },
    companyType: { $type: "$company" }
  }
}

Результат содержит поля _id, name, и четыре поля с типами данных: nameType, ageType, textType и companyType. Например, textType укажет, что text — массив, а companyType — что company — объект. Эта информация предоставляется для каждого документа.

Резюме

Оператор $type позволяет легко определить типы данных полей в документах коллекции.

Что будем искать? Например,программа