MongoDB $project: Агрегация и выбор полей

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

Пример: выбор полей

Входные документы содержат поля _id, name и company.location.country. Цель — получить выходные документы, содержащие только эти три поля. Для этого используется следующий код:

{ $project: { _id: 1, name: 1, "company.location.country": 1 } }

Результат:

{ "_id": ..., "name": ..., "company.location.country": ... }

Обратите внимание на вложенное поле company.location.country. Значение 1 указывает на включение поля в результат.

Исключение поля _id

Для исключения поля _id из выходных документов используется значение 0:

{ $project: { _id: 0, isActive: 1, name: 1, gender: 1 } }

Установка _id: 0 исключает это поле из результата.

Исключение полей со значением 0

Важно отметить, что оператор $project не исключает поля, если хотя бы одно значение в этом поле отлично от 0. Исключение происходит только если все значения поля равны 0.

Расположение в агрегационной цепочке

Обычно этап $project следует за этапом $match, но может быть размещен и в других позициях агрегационной цепочки.

Переименование и преобразование полей

Оператор $project позволяет не только выбирать поля, но и переименовывать их, а также изменять структуру документов. Более сложные примеры покажут эти возможности.

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