Nesta etapa, exploraremos várias técnicas para formatar e transformar a saída usando o pipeline de agregação do MongoDB. Continuaremos trabalhando com nosso banco de dados da livraria.
Vamos começar lançando o shell do MongoDB:
mongosh
Mude para o banco de dados da livraria:
use bookstore
Primeiro, vamos usar $toUpper
e $toLower
para formatar campos de texto:
db.books.aggregate([
{
$project: {
_id: 0,
titleUpperCase: { $toUpper: "$title" },
authorLowerCase: { $toLower: "$author" }
}
}
]);
Exemplo de saída:
[
{
titleUpperCase: 'MONGODB BASICS',
authorLowerCase: 'jane smith'
},
// ... other book documents
]
Em seguida, vamos formatar valores numéricos usando $round
e criar strings de preço formatadas:
db.books.aggregate([
{
$project: {
_id: 0,
title: 1,
roundedPrice: { $round: ["$price", 1] },
formattedPrice: {
$concat: ["$", { $toString: { $round: ["$price", 2] } }]
}
}
}
]);
Exemplo de saída:
[
{
title: 'MongoDB Basics',
roundedPrice: 30,
formattedPrice: '$29.99'
},
// ... other book documents
]
Também podemos formatar arrays e criar representações de strings complexas:
db.books.aggregate([
{
$project: {
_id: 0,
title: 1,
categoriesSummary: {
$reduce: {
input: "$categories",
initialValue: "",
in: {
$concat: [
"$$value",
{ $cond: [{ $eq: ["$$value", ""] }, "", ", "] },
"$$this"
]
}
}
}
}
}
]);
Exemplo de saída:
[
{
title: 'MongoDB Basics',
categoriesSummary: 'Database, Programming'
},
// ... other book documents
]
Este último exemplo usa $reduce
para juntar elementos de array em uma string separada por vírgulas.