5

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

前任:

在用户集合中:

{ 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" }
]
4

1 回答 1

16

您可以为此使用正则表达式

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 将使用该索引。

于 2012-04-14T20:00:15.370 回答