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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *