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
