Использование Regex в mongodb - PullRequest
3 голосов
/ 04 октября 2011

Я пытаюсь использовать регулярные выражения в моих запросах mongodb.Согласно документации, я могу запустить регулярное выражение в своем запросе, например:

db.customers.find( { name : /^foo.bar/ } );

Но есть способ сохранить регулярное выражение в документе и получить документы, где регулярное выражение соответствует предоставленной строке?

Пример документа:

{ _id : SomeID , matcher : "/^foo.bar/" }

Запрос (в моих снах).

db.customers.find( { matcher : { $matches : "foozbar" } );

1 Ответ

6 голосов
/ 04 октября 2011

Да, вы можете использовать произвольный JavaScript в запросах .

> db.customers.insert({_id: 9, matcher: '^foo.bar'})
> db.customers.insert({_id: 318, matcher: '^bar.qux'})
> db.customers.insert({_id: 44, matcher: '^foo[a-z]+r'})
> db.customers.find(function() {
...     return RegExp(this.matcher).test('foozbar');
... })
{ "_id" : 9, "matcher" : "^foo.bar" }
{ "_id" : 44, "matcher" : "^foo[a-z]+r" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...