Mongoose:查询以某个字符开头

22

我希望基本上进行用户名搜索。

User.find({ username: "Mich"})

我希望有一个像上面那样的查询,可以返回所有用户名以"Mich"开头的用户。比如Michael、Michaela、MichJagger等。

1个回答

60

你可以使用正则表达式进行搜索,这在Node中应该能够运行。

User.find({ username: /^Mich/})

请注意,Mongo支持正则表达式对象,这意味着您可以执行

var regexp = new RegExp("^"+ req.params.username);
User.find({ username: regexp});

或者使用Mongo自己的正则表达式构造函数

User.find({ username: {$regex : "^" + req.params.username}});

1
我该如何插入那个值?比如说,如果我有req.params.username,那么我该如何用一个变量替换Mich? - opticon
3
如果有人感兴趣,可以使用模板字符串:{ $regex: `^${req.params.username}` }。另外,可以使用以下代码创建一个正则表达式对象:var regexp = new RegExp(`^${req.params.username}`); - Troy Cosentino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接