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

Regex 如何使用正则表达式查找指定字符串中出现的匹配项?,regex,mongodb,Regex,Mongodb,我有一个独特的情况,我需要查询mongo数据库,以查找文本正文中出现的人的姓名。查询必须指定文本体,并查找具有文本体中出现的值的记录。如何使用正则表达式实现这一点 我需要编写一个与此匹配的查询: /乔纳森是个帅哥 问题是“test”中的文本是mongo字段的值,因此必须编写此查询,以便将文本体作为输入提供,并且它匹配出现在文本体中(是文本体的子字符串)的名称 一个更具体的例子: db.test.find(); {“_id”:ObjectId(“547e9b79f2b519cd1657b21e

我有一个独特的情况,我需要查询mongo数据库,以查找文本正文中出现的人的姓名。查询必须指定文本体,并查找具有文本体中出现的值的记录。如何使用正则表达式实现这一点

我需要编写一个与此匹配的查询:

/乔纳森是个帅哥

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

一个更具体的例子:

db.test.find();
{“_id”:ObjectId(“547e9b79f2b519cd1657b21e”),“name”:“Jonathan”}
{“_id”:ObjectId(“547e9b88f2b519cd1657b21f”),“name”:“Sandy”}
find({name:{$in:[/Jonathan有最好的查询/]});


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

这个
$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;
}})

^(?=.*\bJonathan\b.*$
如果mongodb支持lookeahead.and为什么不能做
/Jonathan/.test('Jonathan是个帅哥')name
上搜索“Johnathan有最好的查询”将匹配
“name”:“Johnathan”
。谢谢,我查看了$where,但我正在查询数十万个文档,因此需要进行hella Performance的查找。或者至少不会太慢。