Você precisa usar $arrayToObject se você quiser construir suas chaves dinamicamente. É necessário um array de
k
e v
campos como parâmetro. Para torná-lo root, você pode usar $replaceRoot
estágio, tente:db.col.aggregate([
{
$replaceRoot: {
newRoot: { $arrayToObject: [ [ { k: "$code", v: "$item" } ] ]}
}
}
])