$regexFindAll - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$regexFindAll

Introduit dans la version 5.0

L'$regexFindAllopérateur d'Amazon DocumentDB est utilisé pour effectuer une correspondance d'expressions régulières sur des champs de chaîne dans des documents. Il vous permet de rechercher et d'extraire des sous-chaînes spécifiques correspondant à un modèle d'expression régulière donné, en renvoyant toutes les correspondances de l'expression régulière.

Paramètres

  • input: le champ ou l'expression de chaîne à rechercher.

  • regex: le modèle d'expression régulière à associer.

  • options: (facultatif) Objet qui spécifie des paramètres facultatifs pour l'expression régulière, tels que la distinction majuscules/majuscules et la correspondance multiligne. Les options prises en charge sont i (sans distinction majuscules/majuscules) et m (multiligne).

Exemple (MongoDB Shell)

L'exemple suivant montre comment utiliser l'$regexFindAllopérateur pour extraire toutes les séquences de lettres du email champ.

Création d'exemples de documents

db.users.insertMany([ { _id: 1, name: "John Doe", email: "john@example.com", phone: "555-1234" }, { _id: 2, name: "Jane Roe", email: "jane@example.com", phone: "555-5678" }, { _id: 3, name: "Carlos Salazar", email: "carlos@example.com", phone: "555-3456" }, { _id: 4, name: "Saanvi Sarkar", email: "saanvi@example.com", phone: "555-7890" } ]);

Exemple de requête

db.users.aggregate([ { $project: { name: 1, emailMatches: { $regexFindAll: { input: '$email', regex: '[a-z]+', options: 'i' } } } } ])

Sortie

[ { _id: 1, name: 'John Doe', emailMatches: [ { match: 'john', idx: 0, captures: [] }, { match: 'example', idx: 5, captures: [] }, { match: 'com', idx: 13, captures: [] } ] }, { _id: 2, name: 'Jane Roe', emailMatches: [ { match: 'jane', idx: 0, captures: [] }, { match: 'example', idx: 5, captures: [] }, { match: 'com', idx: 13, captures: [] } ] }, { _id: 3, name: 'Carlos Salazar', emailMatches: [ { match: 'carlos', idx: 0, captures: [] }, { match: 'example', idx: 7, captures: [] }, { match: 'com', idx: 15, captures: [] } ] }, { _id: 4, name: 'Saanvi Sarkar', emailMatches: [ { match: 'saanvi', idx: 0, captures: [] }, { match: 'example', idx: 7, captures: [] }, { match: 'com', idx: 15, captures: [] } ] } ]

Remarque : si votre requête utilise la version 1 du planificateur Amazon DocumentDB, vous devez utiliser un indice pour utiliser un index. Sans indication, la requête peut effectuer une analyse de la collection. Pour vérifier la version de votre planificateur et en savoir plus sur l'utilisation des astuces, consultez la [documentation Amazon DocumentDB Query Planner] (https://docs.aws.amazon.com/documentdb/latest/developerguide/query-planner.html).

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $regexFindAll commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

Node.js

Voici un exemple d'utilisation de l'$regexFindopérateur dans une application Node.js :

const { MongoClient } = require('mongodb'); async function main() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const users = db.collection('users'); const results = await users.aggregate([ { $project: { name: 1, emailMatches: { $regexFindAll: { input: "$email", regex: "[a-z]+", options: "i" } } } } ]).toArray(); console.log(JSON.stringify(results, null, 2)); await client.close(); } main();
Python

Voici un exemple d'utilisation de l'$regexFindopérateur dans une application Python :

from pymongo import MongoClient client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] users = db['users'] results = list(users.aggregate([ { "$project": { "name": 1, "emailMatches": { "$regexFindAll": { "input": "$email", "regex": "[a-z]+", "options": "i" } } } } ])) print(results) client.close()