MongoDB 4.4 a introduit neuf nouveaux opérateurs de pipeline d'agrégation, dont deux nouveaux opérateurs pour rechercher et remplacer une sous-chaîne.
Les deux nouveaux opérateurs qui permettent de rechercher et de remplacer une sous-chaîne sont le $replaceOne et $replaceAll opérateurs.
Voici ce que fait chaque opérateur :
| Opérateur | Description |
|---|---|
$replaceOne | Remplace la première instance d'une chaîne de recherche dans une chaîne d'entrée par une chaîne de remplacement. |
$replaceAll | Remplace toutes les instances d'une chaîne de recherche dans une chaîne d'entrée par une chaîne de remplacement. |
La seule différence entre ces opérateurs est que $replaceOne remplace le premier instance de la sous-chaîne, alors que $replaceAll remplace tous instances de la sous-chaîne.
Le $replaceOne Opérateur
Supposons que nous ayons une collection appelée products avec le document suivant :
{
"_id" : 1,
"product" : "Left Handed Screwdriver with Left Handed Carry Case"
}
Nous pouvons utiliser le $replaceOne opérateur pour remplacer la première instance de la sous-chaîne Left Handed avec une autre chaîne :
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() Résultat :
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Left Handed Carry Case"
}
Notez qu'il existe en fait deux instances de la sous-chaîne (Left Handed ) mais seule la première instance a été remplacée.
Le $replaceAll Opérateur
Dans l'exemple précédent, nous avons remplacé la première instance de la sous-chaîne.
Utilisons maintenant le $replaceAll opérateur pour remplacer tous instances de la sous-chaîne :
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() Résultat :
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case"
}
Cette fois, les deux instances de la sous-chaîne (Left Handed ) ont été remplacés.