$RegexFind - 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.

$RegexFind

Nouveau depuis la version 5.0.

Non pris en charge par le cluster Elastic.

L'$regexFindopé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é.

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'$regexFindopérateur pour rechercher des documents dont le name champ correspond à un modèle d'expression régulière spécifique.

Création d'exemples de documents

db.users.insertMany([ { "_id": 1, name: "John Doe", email: "john@example.com" }, { "_id": 2, name: "Diego Ramirez", email: "diego@example.com" }, { "_id": 3, name: "Alejandro Rosalez", email: "alejandro@example.com" }, { "_id": 4, name: "Shirley Rodriguez", email: "shirley@example.com" } ]);

Exemple de requête

db.users.aggregate([ { $project: { names: { $regexFind: { input: '$name', regex: 'j', options: 'i' } } } }, { $match: {names: {$ne: null}}} ])

Cette requête renverra tous les documents dont le name champ contient la lettre « j » (sans distinction majuscules/majuscules).

Sortie

[ { _id: 1, names: { match: 'J', idx: 0, 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 $regexFind commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

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: { names: { $regexFind: { input: "$name", regex: "john", options: "i" }}}}, { $match: {names: {$ne: null}}} ]).toArray(); console.log(results); await client.close(); } main();
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": { "names": { "$regexFind": { "input": "$name", "regex": "john", "options": "i" }}}}, { "$match": {"names": {"$ne": None}}} ])) print(results) client.close()