$regexFindAll - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$regexFindAll

Introdotto nella versione 5.0

L'$regexFindAlloperatore in Amazon DocumentDB viene utilizzato per eseguire la corrispondenza delle espressioni regolari su campi stringa all'interno dei documenti. Consente di cercare ed estrarre sottostringhe specifiche che corrispondono a un determinato modello di espressione regolare, restituendo tutte le corrispondenze dell'espressione regolare.

Parametri

  • input: Il campo o l'espressione di stringa da cercare.

  • regex: Il modello di espressione regolare da abbinare.

  • options: (opzionale) Un oggetto che specifica parametri opzionali per l'espressione regolare, come la distinzione tra maiuscole e minuscole e la corrispondenza su più righe. Le opzioni supportate sono i (senza distinzione tra maiuscole e minuscole) e (multilinea). m

Esempio (MongoDB Shell)

L'esempio seguente mostra come utilizzare l'$regexFindAlloperatore per estrarre tutte le sequenze di lettere dal campo. email

Crea documenti di esempio

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

Esempio di interrogazione

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

Output

[ { _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: se la tua query utilizza Amazon DocumentDB planner versione 1, devi usare un suggerimento per utilizzare un indice. Senza un suggerimento, la query può eseguire una scansione della raccolta. Per verificare la versione del tuo planner e saperne di più sull'uso dei suggerimenti, consulta la [documentazione di Amazon DocumentDB Query Planner] (-planner.html). https://docs.aws.amazon.com/documentdb/ latest/developerguide/query

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $regexFindAll comando, scegli la scheda relativa alla lingua che desideri utilizzare:

Node.js

Ecco un esempio di utilizzo dell'$regexFindoperatore in un'applicazione 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

Ecco un esempio di utilizzo dell'$regexFindoperatore in un'applicazione 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()