过滤Mongoose中的过滤结果

时间:2016-05-18 20:29:48

标签: javascript node.js mongodb express mongoose

我正在尝试通过多个参数过滤模型。

首先,我找到那些名字包含查询参数的对象:

if (firstName){
    User.find({firstName: new RegExp(firstName, "i")}, function (err, users) {
        filteredUsers = users;
    });
} 

然后,我想继续过滤filteredUsers,如:

if (lastName){
    filteredUsers.find({firstName: new RegExp(lastName, "i")}, function (err, users) {
        filteredUsers = users;
    })
}

等等。

但是,我自然会收到此错误:

 #<Object> is not a function

如何完成过滤过滤结果?

1 个答案:

答案 0 :(得分:2)

aggregation正是您要找的。 你的代码看起来像(我没有尝试过mongoose):

Users.aggregate(
  [
    { $match: firstname ? { firstname: new RegExp(firstname, "i") } : {} },
    { $match: lastname ? { lastname: new RegExp(lastname, "i") } : {} }
  ]
);