Referente à etapa $project, vale mencionar que da forma que consta no exercício, será retornado o id do cliente na projeção, o que ocasionará em erro de duplicação de ID:
{
$project: {
id_cliente: "$_id",
endereco: "$endereco",
data: ISODate(),
produtos: "$carrinho.produtos",
valorTotal: {
$sum: "$carrinho.produtos.preco"
}
}
},
Conforme passado nas aulas, para não retornar o id, informar:
_id: 0