【发布时间】:2016-09-28 06:49:10
【问题描述】:
我有一个基本的用户集合,其中包含他们的firstName、lastName 和一些其他详细信息。
如何简单地通过两个名称的组合或部分搜索来搜索用户?
例如,对于一个集合:
{
firstName: Bob,
lastName: Jerry
}, {
firstName: Clark,
lastName: Mcbobby
}
如果搜索词是bob,则将返回两个用户,因为第一个文档firstName 是bob,最后一个用户lastName 包含bob。如果bob j 是搜索词,则只会返回第一个文档,因为如果两个名称组合在一起,则等于匹配搜索词的Bob Jerry。
我尝试创建一个基本的aggregate 来连接名称,然后进行匹配,尽管 Mongoose 一直向我抛出错误:Arguments must be aggregate pipeline operators。
这是我当前的代码:
User.aggregate({
$project: { "name" : { $concat : [ "$firstName", " ", "$lastName" ] } },
$match: {"name": {$regex: "/bob j/i"}}
}).exec(function(err, results) {
...
});
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query aggregation-framework