Regex 用于匹配MongoDB字符串的正则表达式

Regex 用于匹配MongoDB字符串的正则表达式,regex,mongodb,mongoose,mongodb-query,regex-lookarounds,Regex,Mongodb,Mongoose,Mongodb Query,Regex Lookarounds,我用的是猫鼬,有很多这样的东西: { "_id" : ObjectId("5bfeb4aa0a49bf3d84d885b5"), "category" : [ "Cult", "Space Opera" ], "actors" : [ "David Prowse in the role of Darth Vader", "Mark Hamill as Luke Skywalker", "Carrie Fisher as Leia Organa",

我用的是猫鼬,有很多这样的东西:

{
"_id" : ObjectId("5bfeb4aa0a49bf3d84d885b5"),
"category" : [ 
    "Cult", 
    "Space Opera"
],
"actors" : [ 
    "David Prowse in the role of Darth Vader", 
    "Mark Hamill as Luke Skywalker", 
    "Carrie Fisher as Leia Organa", 
    ...
],
"title" : "Star Wars",
"description" : ".....",
"rating" : 4.65,
"__v" : 0
}

我需要找到所有与我的演员阵容相匹配的电影

例如:
[“David Prowse”、“Mark Hamill”、“Carrie Fisher”]

使用此数组时,其中一部电影应该是《星球大战》,但在电影对象中没有干净的演员名称,因此可能需要与regex或类似的名称匹配,以便通过子字符串匹配(不区分大小写)

我的实际查询返回的文档数组总是空的----------

让arrayOfqueries=[];
for(设i=0;i{
console.log(文档)
}).catch((错误)=>{
控制台日志(err);
});

您的正则表达式应该是

for (let i = 0; i < arrayOfActors.length; i++) {
  arrayOfqueries.push(new RegExpr("\b" + arrayOfActors[i] + "\b"))
}
for(设i=0;i
我猜一个简单的捕获组就足够了。然后,基于Fanpark解决方案,您的代码可能如下所示:

for (let i = 0; i < arrayOfActors.length; i++) {
  arrayOfqueries.push(new RegExpr("(" + arrayOfActors[i] + ")"))
}
我们的代码可能如下所示:

arrayOfqueries.push(new RegExpr("(?:[\s\S]*)(" + arrayOfActors[i] + ")(?:[\s\S]*)"))
此外,还应该转义元字符


@the_mahasagar可以工作,但它现在可以用我的一组演员搜索所有文档。。只有当我的所有参与者与文档的参与者匹配时,它才应该返回文档
(?:[\s\S]*)(David Prowse)(?:[\s\S]*)
arrayOfqueries.push(new RegExpr("(?:[\s\S]*)(" + arrayOfActors[i] + ")(?:[\s\S]*)"))