我似乎无法在谷歌和猫鼬网站上找到答案,所以我在这里问。如果可能,我如何在文档中搜索部分匹配的字符串。
前:
在用户集合中:
{ 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" }
]
答案 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将使用该索引。