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.