$regexFindAll - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

$regexFindAll

Introducido en 5.0

El $regexFindAll operador de Amazon DocumentDB se utiliza para realizar coincidencias de expresiones regulares en los campos de cadenas de texto de los documentos. Le permite buscar y extraer subcadenas específicas que coincidan con un patrón de expresión regular determinado y devuelve todas las coincidencias de la expresión regular.

Parámetros

  • input: el campo de cadena o la expresión que se va a buscar.

  • regex: el patrón de expresión regular que debe coincidir.

  • options: (opcional) Un objeto que especifica parámetros opcionales para la expresión regular, como la distinción entre mayúsculas y minúsculas y la coincidencia de líneas múltiples. Las opciones admitidas son i (no distingue entre mayúsculas y minúsculas) y m (multilínea).

Ejemplo (MongoDB Shell)

El siguiente ejemplo muestra cómo utilizar el $regexFindAll operador para extraer todas las secuencias de letras del email campo.

Cree documentos de muestra

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" } ]);

Ejemplo de consulta

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

Salida

[ { _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: [] } ] } ]

Nota: Si su consulta utiliza la versión 1 del planificador de Amazon DocumentDB, debe utilizar una sugerencia para utilizar un índice. Sin una pista, la consulta puede realizar un escaneo de la colección. Para comprobar la versión del planificador y obtener más información sobre el uso de las sugerencias, consulte la [documentación del planificador de consultas de Amazon DocumentDB] (https://docs.aws.amazon.com/documentdb/latest/developerguide/query-planner.html).

Ejemplos de código

Para ver un ejemplo de código para usar el $regexFindAll comando, elija la pestaña correspondiente al idioma que desee usar:

Node.js

A continuación, se muestra un ejemplo del uso del $regexFind operador en una aplicación de 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

Este es un ejemplo del uso del $regexFind operador en una aplicación de 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()