Как исключить поле из запроса

Для запроса использую aggregate, куда передаю:

[{
    $match: {
      id
    }
  },
  {
    $lookup: {
      from: 'blogs',
      as: 'blog',
      pipeline: [{
        $project: {
          id: 1,
          name: 1,
          articles: 1
        },
      }, {
        $match: {
          articles: {
            $in: [id]
          }
        }
      }]
    }
  }
]

Где articles - массив, длина которого неопределенная. Я указываю articles в $project, чтобы потом воспользоваться им в $match. Проблема в том, что в итоге вместе с документом мне возвращается articles, а это лишняя нагрузка на сервер. Как можно не возвращать поле, полученное в $project?


Ответы (1 шт):

Автор решения: Voprositel

В итоге мне помог банальный $unset:

[{
    $match: {
      id
    }
  },
  {
    $lookup: {
      from: 'blogs',
      as: 'blog',
      pipeline: [{
        $project: {
          id: 1,
          name: 1,
          articles: 1
        },
      }, {
        $match: {
          articles: {
            $in: [id]
          }
        }
      }, {
        $unset: 'articles'
      }]
    }
  }
]

Возможно, есть более правильное решение.

→ Ссылка