$regexFindAll - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$regexFindAll

Eingeführt in 5.0

Der $regexFindAll Operator in Amazon DocumentDB wird verwendet, um den Abgleich regulärer Ausdrücke für Zeichenkettenfelder in Dokumenten durchzuführen. Es ermöglicht Ihnen, nach bestimmten Teilzeichenfolgen zu suchen und diese zu extrahieren, die einem bestimmten Muster für reguläre Ausdrücke entsprechen. Dabei werden alle Treffer des regulären Ausdrucks zurückgegeben.

Parameter

  • input: Das Zeichenkettenfeld oder der Ausdruck, nach dem gesucht werden soll.

  • regex: Das Muster für reguläre Ausdrücke, nach dem gesucht werden soll.

  • options: (optional) Ein Objekt, das optionale Parameter für den regulären Ausdruck angibt, z. B. Berücksichtigung von Groß- und Kleinschreibung und mehrzeiliger Abgleich. Unterstützte Optionen sind i (ohne Berücksichtigung der Groß-/Kleinschreibung) und m (mehrzeilig).

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt, wie der $regexFindAll Operator verwendet wird, um alle Buchstabenfolgen aus dem email Feld zu extrahieren.

Erstellen Sie Beispieldokumente

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

Beispiel für eine Abfrage

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

Ausgabe

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

Hinweis: Wenn Ihre Abfrage Amazon DocumentDB Planner Version 1 verwendet, müssen Sie einen Hinweis verwenden, um einen Index zu verwenden. Ohne einen Hinweis führt die Abfrage möglicherweise einen Sammlungsscan durch. Um Ihre Planer-Version zu überprüfen und mehr über die Verwendung von Hinweisen zu erfahren, lesen Sie die [Amazon DocumentDB Query Planner-Dokumentation] (https://docs.aws.amazon.com/documentdb/latest/developerguide/query-planner.html).

Codebeispiele

Um ein Codebeispiel für die Verwendung des $regexFindAll Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

Node.js

Hier ist ein Beispiel für die Verwendung des $regexFind Operators in einer Node.js -Anwendung:

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

Hier ist ein Beispiel für die Verwendung des $regexFind Operators in einer Python-Anwendung:

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()