MongoDB : Comment utiliser la fonction $susbtr
Vous pouvez utiliser la fonction $substr dans MongoDB pour extraire une sous-chaîne d’une chaîne.
Cette fonction utilise la syntaxe de base suivante :
db.myCollection.aggregate([ { $project: {substring: { $substr: [ "$fullstring", 0, 4 ] }}} ])
Cet exemple particulier extrait les quatre caractères du champ intitulé « fullString » à partir de la position 0.
L’exemple suivant montre comment utiliser cette syntaxe en pratique avec une vente de collection avec les documents suivants :
db.sales.insertOne({yearMonth: 201702, amount: 40}) db.sales.insertOne({yearMonth: 201802, amount: 32}) db.sales.insertOne({yearMonth: 201806, amount: 19}) db.sales.insertOne({yearMonth: 201910, amount: 29}) db.sales.insertOne({yearMonth: 201907, amount: 35})
Exemple : comment utiliser la fonction $susbtr dans MongoDB
Nous pouvons utiliser le code suivant pour extraire les quatre premiers caractères du champ « annéeMois » et les afficher dans un nouveau champ intitulé « année » :
db.sales.aggregate([ { $project: {year: { $substr: [ "$yearMonth", 0, 4 ] }}} ])
Ce code produit le résultat suivant :
{ _id: ObjectId("620145544cb04b772fd7a929"), year: '2017' } { _id: ObjectId("620145544cb04b772fd7a92a"), year: '2018' } { _id: ObjectId("620145544cb04b772fd7a92b"), year: '2018' } { _id: ObjectId("620145544cb04b772fd7a92c"), year: '2019' } { _id: ObjectId("620145544cb04b772fd7a92d"), year: '2019' }
Notez que les quatre premiers caractères du champ « moisAnnée » de chaque document sont affichés dans un nouveau champ intitulé « année ».
Il est important de noter que ce code affiche uniquement la sous-chaîne.
Pour ajouter réellement un nouveau champ à la collection qui contient cette sous-chaîne, nous devons utiliser la fonction $merge comme suit :
db.sales.aggregate([ { $project: {year: { $substr: [ "$yearMonth", 0, 4 ] }}}, { $merge: "sales" } ])
Voici à quoi ressemble désormais la collection mise à jour :
{ _id: ObjectId("620145544cb04b772fd7a929"), yearMonth: 201702, amount: 40, year: '2017' } { _id: ObjectId("620145544cb04b772fd7a92a"), yearMonth: 201802, amount: 32, year: '2018' } { _id: ObjectId("620145544cb04b772fd7a92b"), yearMonth: 201806, amount: 19, year: '2018' } { _id: ObjectId("620145544cb04b772fd7a92c"), yearMonth: 201910, amount: 29, year: '2019' } { _id: ObjectId("620145544cb04b772fd7a92d"), yearMonth: 201907, amount: 35, year: '2019' }
Notez que le nouveau champ intitulé « année » a été ajouté à chaque document de la collection et qu’il affiche les quatre premiers caractères du champ « annéeMois ».
Remarque : Vous pouvez trouver la documentation complète de la fonction $substr ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :
MongoDB : Comment vérifier si le champ contient une chaîne
MongoDB : Comment concaténer des chaînes de deux champs
MongoDB : Comment remplacer des chaînes