如何使用正则表达式查找指定字符串中出现的匹配项?

时间:2014-12-03 06:12:32

标签: regex mongodb

我有一个独特的情况,我需要查询mongo数据库,以找到文本正文中出现的人的姓名。查询必须指定文本正文并查找具有在文本正文中出现的值的记录。我怎么能用正则表达式做到这一点?

我需要编写一个匹配的查询: /Jonathan is a handsome guy/.test('Jonathan')

问题是“test”中的文本是mongo字段的值,因此必须编写此查询,使得文本正文作为输入提供,并且匹配在其中出现的名称(是子字符串) )文本正文。

更具体的例子:

db.test.find(); { "_id" : ObjectId("547e9b79f2b519cd1657b21e"), "name" : "Jonathan" } { "_id" : ObjectId("547e9b88f2b519cd1657b21f"), "name" : "Sandy" } db.test.find({name: { $in: [/Jonathan has the best queries/]} } );

我需要构建一个查询,当输入“Jonathan有最好的查询”时会返回“Jonathan”

1 个答案:

答案 0 :(得分:1)

这个$where可以解决问题,但速度可能很慢:

db.test.find({$where: function() {
  var mystr = '/Jonathan has the best queries/'; 
  var patt = new RegExp(this.name);
  if (patt.test(mystr)) return true;
  return false;
}})