Mongodb 查找匹配的部分字符串

Mongodb 查找匹配的部分字符串,mongodb,mongoose,Mongodb,Mongoose,我似乎在谷歌和猫鼬网站上都找不到答案,所以我在这里提问。如果可能,如何在文档中搜索部分匹配的字符串 例: 在用户集合中: { name: "Louis", location: "Paris, France" }, { name: "Bill", location: "Paris, Illinoid" }, { name: "Stephen", location: "Toronto, Ontario" } 猫鼬功能: searchForCity("Paris"); 结果将是来自用户集合的文档列

我似乎在谷歌和猫鼬网站上都找不到答案,所以我在这里提问。如果可能,如何在文档中搜索部分匹配的字符串

例:

在用户集合中:

{ name: "Louis", location: "Paris, France" },
{ name: "Bill", location: "Paris, Illinoid" },
{ name: "Stephen", location: "Toronto, Ontario" }
猫鼬功能:

searchForCity("Paris");
结果将是来自用户集合的文档列表,位置字符串中有“Paris”。例:

[
    { name: "Louis", location: "Paris, France" },
    { name: "Homer", location: "Paris, Illinois" }
]
您可以使用一个:

查询#regex
查询#$regex

指定
$regex
运算符

query.regex('name.first', /^a/i)
比如说:

User.where('location').$regex(/Paris/);
User.where('location').$regex(/paris/i); // Case insensitive version
请记住,正则表达式查询可能非常昂贵,因为MongoDB必须针对每个
位置运行正则表达式。如果可以在开始时锚定正则表达式:

User.where('location').$regex(/^Paris/);

然后,您可以索引位置,MongoDB将使用该索引。

Hiya希望这有帮助:查找。找到一个好的,干杯!工作完美,必须添加:var expression=new RegExp(单词“i”);,是word=“巴黎”;这是我可以在其中包含变量。有猫鼬解决方案吗?@chovy嗯,答案的哪一部分不是猫鼬解决方案?对不起,我弄错了。我以为这是本地的蒙哥人。现在的问题是如何有条件地将
$regex()
添加到查询中?我只是偶尔需要它。@chovy:如果
x
是一个查询,那么
x.where(…).regex(…)
也是一个查询,对吗?因此,您只需使用
if(whatever){query=query.where(…).regex(…)}
之类的内容逐段构建查询。我已经有几年没碰过这些东西了,但我很确定这就是它的工作原理。