Javascript 出现两个带有特定首字母MongoDB的单词
我有一系列电影,包括片名、编剧、收视率、演员和其他领域 我试图找到至少有一个演员的电影,名字和姓氏以C开头,并显示标题和演员。 Actors是一个包含Actors的数组(同一字段中的名字和姓氏),例如:{Matt Damon,Bradd Pitt}等 我试过这个:Javascript 出现两个带有特定首字母MongoDB的单词,javascript,regex,string,mongodb,nosql,Javascript,Regex,String,Mongodb,Nosql,我有一系列电影,包括片名、编剧、收视率、演员和其他领域 我试图找到至少有一个演员的电影,名字和姓氏以C开头,并显示标题和演员。 Actors是一个包含Actors的数组(同一字段中的名字和姓氏),例如:{Matt Damon,Bradd Pitt}等 我试过这个: db.movieDetails.find( { actors: { $regex: "^C.C" , $options: 'i' } }, {_id:0, title:1, actors:1} ); 还有这样的聚合:
db.movieDetails.find(
{ actors: { $regex: "^C.C" , $options: 'i' } },
{_id:0, title:1, actors:1}
);
还有这样的聚合:
db.movieDetails.aggregate(
{$unwind: '$actors'},
{$match: { actors: { $regex: "^C.C", $options: 'i' } } },
{$group: {_id: { actors: '$actors' , title: "$title" }}}
);
但我只是想通过观察演员以C开头的情况来避免这个问题,这个解决方案只起到了部分作用,因为它会返回两个演员的电影,他们的名字以C开头
我想知道是否有一种方法可以使用正则表达式来检查整个字符串中以某物开头的所有单词。您提供的正则表达式不正确。
^C.C
- ^-匹配行首
- C-匹配字符C
- -匹配任何单个字符
- C-匹配字符C
^C.*C
。说明:
- ^-匹配行首
- C-匹配字符C
- *-匹配零次和无限次之间的任何字符
- (空格)C-匹配后跟C的空格(假设姓氏与名字之间用空格分隔)
db.movieDetails.find({
actors: {
$regex: "^C.* C",
$options: "i"
}
});
您提供的正则表达式不正确。
^C.C
- ^-匹配行首
- C-匹配字符C
- -匹配任何单个字符
- C-匹配字符C
^C.*C
。说明:
- ^-匹配行首
- C-匹配字符C
- *-匹配零次和无限次之间的任何字符
- (空格)C-匹配后跟C的空格(假设姓氏与名字之间用空格分隔)
db.movieDetails.find({
actors: {
$regex: "^C.* C",
$options: "i"
}
});
谢谢,你的解决方案非常有效,现在我完全理解正则表达式。谢谢,你的解决方案非常有效,现在我完全理解正则表达式。