find
os resultados só podem incluir conteúdo dos próprios documentos, enquanto aggregate
pode projetar novos valores derivados do conteúdo do documento (como o comprimento de um array). É por isso que você precisa usar aggregate
para isso, mesmo que você esteja recebendo apenas um único documento. Post.aggregate([{$match: {postId: 5}}, {$project: {upvotes: {$size: '$upvotes'}}}])
Uma única exceção é o
$meta
operador de projeção para projetar um $text
pontuação do resultado da consulta.