【发布时间】:2012-07-28 08:51:59
【问题描述】:
我想使用相同的正则表达式查询多个字段。在此查询中,我想接受单个文本输入并检查 firstName 和 lastName 字段的结果。我可以使用 mongoose 文档中的 regex 函数很好地查询单个字段,但是 'or' 子句的语法给我带来了麻烦。
var re = new RegExp(req.params.search, 'i');
app.User.find().or([{ 'firstName': { $regex: re }}, { 'lastName': { $regex: re }}]).sort('title', 1).exec(function(err, users) {
res.json(JSON.stringify(users));
});
(我在 node.js 0.6.12 上运行 mongoose 2.7.1)
【问题讨论】:
-
语法看起来不错;你能详细说说它给你带来的麻烦吗?
-
天哪。这是一些糟糕的数据。事实证明,确实可以正常工作。
-
如果您有一个名为“Joe Smith”的人并且有人搜索了“Joe S” - 没有结果?
-
好问题。部分关键字匹配需要更强大的解决方案。
-
@MikeCauser:知道如何编写搜索查询,以防有人搜索“Joe S”并在结果中获得类似“Joe Smith”的记录。我需要实现它,但遇到了麻烦。
标签: regex node.js mongodb express mongoose