MongoDB : Comment trouver la longueur d’une chaîne
Vous pouvez utiliser les méthodes suivantes pour trouver la longueur d’une chaîne dans MongoDB et utiliser cette longueur de chaîne dans les requêtes :
Méthode 1 : Trouver la longueur de la chaîne
db.myCollection.aggregate([ { $project: { "name": 1, "length": { $strLenCP: "$name" } }} ])
Méthode 2 : rechercher des documents dont la chaîne est supérieure à une certaine longueur
db.myCollection.find({ "name": { $exists: true }, $expr: { $gt: [ { $strLenCP: "$name" }, 14 ] } })
Les exemples suivants montrent comment utiliser chaque méthode avec une équipe de collecte avec les documents suivants :
db.teams.insertOne({name: "Dallas Mavs", points: 31}) db.teams.insertOne({name: "San Antonio Spurs", points: 22}) db.teams.insertOne({name: "Houston Rockets", points: 19}) db.teams.insertOne({name: "Boston Celtics", points: 26}) db.teams.insertOne({name: "Cleveland Cavs", points: 33})
Exemple 1 : Trouver la longueur d’une chaîne
Nous pouvons utiliser le code suivant pour calculer la longueur de la chaîne dans le champ « nom » de chaque document :
db.teams.aggregate([ { $project: { "name": 1, "length": { $strLenCP: "$name" } }} ])
Ce code renvoie les résultats suivants :
{ _id: ObjectId("62014eff4cb04b772fd7a93d"), name: 'Dallas Mavs', length: 11 } { _id: ObjectId("62014eff4cb04b772fd7a93e"), name: 'San Antonio Spurs', length: 17 } { _id: ObjectId("62014eff4cb04b772fd7a93f"), name: 'Houston Rockets', length: 15 } { _id: ObjectId("62014eff4cb04b772fd7a940"), name: 'Boston Celtics', length: 14 } { _id: ObjectId("62014eff4cb04b772fd7a941"), name: 'Cleveland Cavs', length: 14 }
La valeur de longueur affiche la longueur de la chaîne dans la colonne « nom ».
Par exemple:
- La longueur de la chaîne « Dallas Mavs » est de 11 .
- La longueur de la chaîne ‘San Antonio Spurs’ est de 17 .
Et ainsi de suite.
Notez que la longueur compte également les espaces vides.
Exemple 2 : rechercher des documents dont la chaîne est supérieure à une certaine longueur
Nous pouvons utiliser le code suivant pour renvoyer uniquement les documents dont la chaîne dans la colonne « nom » est supérieure à 14 :
db.teams.find({ "name": { $exists: true }, $expr: { $gt: [ { $strLenCP: "$name" }, 14 ] } })
Cette requête renvoie les résultats suivants :
{ _id: ObjectId("62014eff4cb04b772fd7a93e"), name: 'San Antonio Spurs', points: 22 } { _id: ObjectId("62014eff4cb04b772fd7a93f"), name: 'Houston Rockets', points: 19 }
Notez que les deux seules équipes renvoyées sont celles dont le champ « nom » est supérieur à 14 .
Remarque : Vous pouvez trouver la documentation complète de la fonction $strLenCP ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans MongoDB :
MongoDB : Comment diviser une chaîne en un tableau de sous-chaînes
MongoDB : Comment concaténer des chaînes de deux champs
MongoDB : Comment remplacer des chaînes dans