Regular Expression (Regex)
Last updated: 2026-10-09
Regular Expression (Regex)
Regular Expression is a BSON type for pattern matching in queries, equivalent to `{ field: /pattern/ }`. It supports PCRE syntax and flags (i ignore case, m multiline, s dotall, x extended). Be aware that unanchored patterns cannot use indexes and force a collection scan — use with care on large collections.
| Category | BSON Types |
|---|---|
| MongoDB Version | 1.0+ |
| Example Language | mongosh (Shell) |
📝 Syntax
{ field: /^prefix/ }
{ field: /pattern/i }
new RegExp("pattern", "i")
Returns:The regex value itself; queries return matching documents
▶ Example
Run the commands below in your local mongosh (requires a running mongod):
// Regular Expression: pattern queries
use shop
db.users.find({ name: /^alice/i })
db.products.find({ sku: { $regex: 'AB-\\d{4}' } })
Output:
// Users whose name starts with alice (case-insensitive) and products with sku like AB-1234
📌 Notes
- Only anchored patterns (/^.../) can use indexes
- /pattern/ literals and $regex strings are equivalent
- Backslashes in strings must be doubled (\\d)
🏷️ Related Tags
💡 Related Cases
More hands-on cases coming soon.
📚 Related Tutorials
❓ FAQ
QCan regex queries use an index?
AOnly anchored patterns like /^abc/ can use an index; others scan the collection.
QIs $regex the same as /pattern/?
AYes — both build a regex query; $regex just takes a string.
QRegex queries are slow — what can I do?
ASwitch to anchored prefix matching with an index, or use a text index for full-text search.