Dans cette étape, nous allons explorer diverses techniques pour mettre en forme et transformer la sortie en utilisant le pipeline d'agrégation de MongoDB. Nous continuerons à travailler avec notre base de données bookstore
.
Commençons par lancer le shell MongoDB :
mongosh
Passons à la base de données bookstore
:
use bookstore
Tout d'abord, utilisons $toUpper
et $toLower
pour mettre en forme les champs texte :
db.books.aggregate([
{
$project: {
_id: 0,
titleUpperCase: { $toUpper: "$title" },
authorLowerCase: { $toLower: "$author" }
}
}
]);
Exemple de sortie :
[
{
titleUpperCase: 'MONGODB BASICS',
authorLowerCase: 'jane smith'
},
//... autres documents de livres
]
Ensuite, mettons en forme les valeurs numériques à l'aide de $round
et créons des chaînes de caractères de prix formatées :
db.books.aggregate([
{
$project: {
_id: 0,
title: 1,
roundedPrice: { $round: ["$price", 1] },
formattedPrice: {
$concat: ["$", { $toString: { $round: ["$price", 2] } }]
}
}
}
]);
Exemple de sortie :
[
{
title: 'MongoDB Basics',
roundedPrice: 30,
formattedPrice: '$29.99'
},
//... autres documents de livres
]
Nous pouvons également mettre en forme les tableaux et créer des représentations de chaînes de caractères complexes :
db.books.aggregate([
{
$project: {
_id: 0,
title: 1,
categoriesSummary: {
$reduce: {
input: "$categories",
initialValue: "",
in: {
$concat: [
"$$value",
{ $cond: [{ $eq: ["$$value", ""], "", ", "] },
"$$this"
]
}
}
}
}
}
]);
Exemple de sortie :
[
{
title: 'MongoDB Basics',
categoriesSummary: 'Database, Programming'
},
//... autres documents de livres
]
Ce dernier exemple utilise $reduce
pour joindre les éléments d'un tableau en une chaîne de caractères séparée par des virgules.