带有特定缩写MongoDB的两个单词的出现

时间:2018-11-27 14:24:50

标签: javascript regex string mongodb nosql

我收藏了一些电影,包括标题,作家,评分,演员和其他领域。

我正在尝试查找电影中至少有一个演员的名字和姓氏以C开头,并显示标题和演员。 演员是一个由演员组成的数组(名字和姓在同一字段上),例如:{Matt Damon,Bradd Pitt}等...

我尝试过:

string = "octave myProgr.m"
const char *command = str.c_str();
system(command);

以及这样的聚合:

db.movieDetails.find( 
  { actors: { $regex: "^C.C" , $options: 'i' } }, 
  {_id:0, title:1, actors:1} 
);

但是我只是想通过观察何时有一个以C开头的演员和另一个演员来避免这个问题,并且该解决方案仅部分起作用,因为它返回了我的两个演员的电影,这些演员的名字都以C开头。

我想知道是否可以使用正则表达式来检查所有以整个字符串开头的单词。

1 个答案:

答案 0 :(得分:2)

您提供的正则表达式不正确。 ^C.C

的说明
  • ^ -匹配行的开头
  • C -匹配字符C
  • -匹配任何单个字符
  • C -匹配字符C

基本上,它将匹配第一个字母和第三个字母为C的任何演员姓名。

相反,请尝试以下正则表达式:^C.* C。说明:

  • ^ -匹配行的开头
  • C -匹配字符C
  • 。* -匹配零到无限次数之间的任意字符
  • (空格)C -匹配一个空格,后跟一个C(假定姓氏与名字之间用空格隔开)

Mongo代码:

db.movieDetails.find({
  actors: {
    $regex: "^C.* C",
    $options: "i"
  }
});