找到匹配的部分字符串

时间:2012-04-14 19:40:54

标签: mongodb mongoose

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

前:

在用户集合中:

{ name: "Louis", location: "Paris, France" },
{ name: "Bill", location: "Paris, Illinoid" },
{ name: "Stephen", location: "Toronto, Ontario" }

猫鼬功能:

searchForCity("Paris");

结果将是位于字符串String中的“Paris”的User集合中的文档列表。例如:

[
    { name: "Louis", location: "Paris, France" },
    { name: "Homer", location: "Paris, Illinois" }
]

1 个答案:

答案 0 :(得分:16)

您可以使用regex

  

Query#regex Query#$regex

     

指定$regex运算符。

query.regex('name.first', /^a/i)

这样的事情:

User.where('location').$regex(/Paris/);
User.where('location').$regex(/paris/i); // Case insensitive version

请记住,正则表达式查询可能非常昂贵,因为MongoDB必须针对每个location运行正则表达式。如果你可以在开始时锚定你的正则表达式:

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

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