Оператор $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 позволяет легко определить типы данных полей в документах коллекции.