Regex 数组上的MongoDB反向通配符搜索

Regex 数组上的MongoDB反向通配符搜索,regex,mongodb,search,match,where,Regex,Mongodb,Search,Match,Where,我正试图从以下表格的数据库中获取一些信息: { names: [{ name: "this has a {variable}" }] } var search = "this has a pizza"; var query = { names: { $elemMatch: { $where: '"' + search + '".match("\"+this.myRegex+"\")' } } } 通过能够传递类似于“这有一个比萨饼”之类的信

我正试图从以下表格的数据库中获取一些信息:

{
  names: [{
    name: "this has a {variable}"
  }]
}
var search = "this has a pizza";
var query = {
  names: {
    $elemMatch: {
      $where: '"' + search + '".match("\"+this.myRegex+"\")'
    }
  }
}
通过能够传递类似于“这有一个比萨饼”之类的信息。i、 e.{variable}是值内部的通配符

目前,我一直在写这种形式的东西:

{
  names: [{
    name: "this has a {variable}"
  }]
}
var search = "this has a pizza";
var query = {
  names: {
    $elemMatch: {
      $where: '"' + search + '".match("\"+this.myRegex+"\")'
    }
  }
}
我已在创建时为其创建了一个新条目:

name.myRegex = name.myRegex.replace(/{.*?}/g, "(.*?)"); 
唉,除了上述不起作用之外,我还认为这是一种可怕的方式来实现这一点


非常感谢您的帮助

您是否尝试使用
$regex
查询运算符-?@Bardzuśny我相信本例中的“regex”存储在文档中,这是在尝试将“字符串”与文档中的regex匹配。您不能在
$elemMatch
内使用
$where
。要使用
$where
,您需要遍历JavaScript代码中的数组的所有逻辑,并且不能借用其他操作符。
$where
中的
this
是整个文档,不应用于字段或任何其他级别。您是否尝试使用
$regex
查询运算符-?@Bardzuśny我相信这种情况下的“regex”存储在文档中,这是在尝试将“字符串”与文档中的regex匹配。您不能在
$elemMatch
内使用
$where
。要使用
$where
,您需要遍历JavaScript代码中的数组的所有逻辑,并且不能借用其他操作符。
$中的
,其中
是整个文档,不应用于字段或任何其他级别。