I have a document in MongoDB with a regex attribute
{
_id: ObjectId("516023189732da20ce000004"),
regex: /^(my|your)\s+regex$/
}
and I need to retrieve this document with something like db.col.find({regex: 'your regex'})
and db.col.find({regex: 'my regex'})
.
In MySQL I'd do: SELECT * FROM table WHERE 'my regex' REGEXP table.regex
. How can I achieve this in MongoDB?
You can use the $where operator in the following fashion:
db.col.find({$where: "\"my regex\".match(this.regex)"})
As explained into Jira ticket provided by @fgalan on 2013, you can use $expr
you can use this query:
db.collection.find({
"$expr": {
"$regexMatch": {
"input": "$key",
"regex": "$regex",
"options": "i"
}
}
})
Example here
With $expr
you can avoid $where
which is not efficient.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With