【发布时间】:2015-08-01 05:00:47
【问题描述】:
我正在使用以下代码按名字或姓氏搜索用户:
var re = new RegExp(req.params.search, 'i');
User.find()
.or([{ firstName: re }, { lastName: re }])
.exec(function(err, users) {
res.json(JSON.stringify(users));
});
如果search 等于'John' 或'Smith',则效果很好,但不适用于'John Sm'。
任何线索如何完成这种查询?
谢谢!
免责声明:这个问题最初出现在 3 年前 this previous question 的 cmets 上,至今仍未得到解答。我正在开始一个新线程,因为 1)这不是主要问题,并且 2)我认为这很有趣,可以拥有自己的线程
编辑:
假设数据库包含两条记录:John Smith 和 John Kennedy。
- 查询
John应该返回John Smith和John Kennedy - 查询
John Sm应该只返回John Smith
【问题讨论】:
-
嗯,问题是您的姓名字段是分开的。在这种情况下,将相同的正则表达式应用于两个字段不会产生您想要的结果。正则表达式需要应用于具有完整名称的同一字段。
-
我明白了。这给我带来了一个问题,如果我可以在猫鼬中查询虚拟字段,我发现this question 答案是否定的。我想我会自己实现一个查询后过滤器并提交答案。谢谢 ZeMoon。
标签: regex node.js mongodb mongoose