Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongoose中使用多个聚合运算符_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 在mongoose中使用多个聚合运算符

Node.js 在mongoose中使用多个聚合运算符,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个mongoose查询,它使用$or聚合器查看在婴儿车中传递的名称是否与名字或姓氏匹配 该查询区分大小写,我想使用$toLower聚合器使其成为不区分大小写的查询 但我似乎不知道如何包括$toLower操作符 这是我的密码: export let findByFirstOrLastName = (req: Request, res: Response) => { User.find({$or: [ {firstName: req.params.name},

我有一个mongoose查询,它使用$or聚合器查看在婴儿车中传递的名称是否与名字或姓氏匹配

该查询区分大小写,我想使用$toLower聚合器使其成为不区分大小写的查询

但我似乎不知道如何包括$toLower操作符

这是我的密码:

export let findByFirstOrLastName = (req: Request, res: Response) => {
    User.find({$or: [
        {firstName: req.params.name},
        {lastName: req.params.name}
    ]}).exec((err, user) => {
        if(err) {
            res.send(err);
        } else {
            res.send(user);
        }
    })
}
我在$or之前试过,在每个字段上也试过


任何帮助都将不胜感激。

您只需先用$toLower和$match来投影数据:

你可以看到

尽管如此,如果要重新匹配字符串,您可能应该查看搜索。因为他们通常是手拉手的。你目前的做法与约翰·约翰等人的做法不符

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      firstName: { $toLower: "$firstName" },
      lastName: { $toLower: "$lastName" }
    }
  },
  {
    $match: {
      $or: [
        { firstName: req.params.name },
        { lastName: req.params.name }
      ]
    }
  }
])