Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

$regex în MongoDB & NoSQL

Operatorul $regex caută șiruri de caractere care se potrivesc unei expresii regulate (PCRE), cu opțiuni ca i pentru majuscule.

Sintaxă
{ <camp>: { $regex: /tipar/, $options: 'i' } }
{ <camp>: /tipar/i }

Ce face $regex

$regex găsește documentele în care un câmp text se potrivește unei expresii regulate. În mongosh poți scrie direct literalul JavaScript /tipar/i sau forma { $regex: 'tipar', $options: 'i' }. Opțiuni: i (ignoră majusculele), m (multilinie), x, s.

Doar tiparele ancorate la început (/^Ana/), sensibile la majuscule, pot folosi eficient un index. Un tipar ca /ana/i verifică fiecare valoare din index sau din colecție, deci e lent pe colecții mari. Pentru căutare de cuvinte în texte, un index text sau Atlas Search sunt mai potrivite.

Parametri

Parametru Descriere
$regex Expresia regulată (literal /…/ sau șir).
$options i, m, x, s.

Ce returnează

Un cursor cu documentele găsite.

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

use magazin
db.clienti.insertMany([
  { _id: 1, nume: 'Ana', email: 'ana@exemplu.ro', telefon: '0722000111' },
  { _id: 2, nume: 'Dan', email: null },
  { _id: 3, nume: 'Ioana', email: 'ioana@exemplu.ro', varsta: 28 },
  { _id: 4, nume: 'Mihai', varsta: '35' }
])

Exemplul 1: Adrese de email de pe un domeniu

Punctul se scrie \., iar $ ancorează la final.

db.clienti.find({ email: { $regex: /@exemplu\.ro$/ } }, { nume: 1, email: 1 })

Ieșire în mongosh

[
  { _id: 1, nume: 'Ana', email: 'ana@exemplu.ro' },
  { _id: 3, nume: 'Ioana', email: 'ioana@exemplu.ro' }
]

Exemplul 2: Nume care încep cu „an”, fără să conteze majusculele

Opțiunea i potrivește și „Ana”.

db.clienti.find({ nume: { $regex: '^an', $options: 'i' } }, { nume: 1 })

Ieșire în mongosh

[ { _id: 1, nume: 'Ana' } ]

Greșeli frecvente

  • Textul introdus de utilizator trebuie „escapat” înainte de a fi pus într-un $regex: caractere ca ., *, ( schimbă sensul tiparului și pot face interogarea foarte lentă.
  • /ana/ nu potrivește „Ana”: expresiile regulate sunt sensibile la majuscule fără opțiunea i.
  • Diacriticele contează: /Iasi/ nu găsește „Iași”.

Comenzi înrudite

  • Index text și $text: Un index text permite căutarea după cuvinte în câmpuri de text, cu operatorul $text; o colecție poate avea un singur index text.
  • $exists: Operatorul $exists găsește documentele care au (true) sau nu au (false) un anumit câmp, indiferent de valoarea lui.
  • $match: Etapa $match păstrează în pipeline doar documentele care se potrivesc filtrului, cu aceeași sintaxă ca find().
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: $regex

Ai o nelămurire despre utilizarea comenzii $regex sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.