Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Javascript 名字和姓氏在mongoDB中合并搜索_Javascript_Node.js_Mongodb_Mongoose_Mongodb Query - Fatal编程技术网

Javascript 名字和姓氏在mongoDB中合并搜索

Javascript 名字和姓氏在mongoDB中合并搜索,javascript,node.js,mongodb,mongoose,mongodb-query,Javascript,Node.js,Mongodb,Mongoose,Mongodb Query,我在MongoDB中存储了两个字段FirstName和LastName。从前端,我收到一个字符串,其中包含名字和姓氏,用空格分隔。我需要一个查找查询,该查询同时搜索名字和姓氏 下面是一个场景 在DB中,我有以下对象 { firstName: "Hemant Kumar", lastName: "Rajpoot" }; 如果我收到“Hemant Kumar Rajpoot”,它应该匹配。如果可能,请不要给出带有聚集的解决方案。您可以使用、和的组合 例如: db.yourCollection.fi

我在MongoDB中存储了两个字段FirstName和LastName。从前端,我收到一个字符串,其中包含名字和姓氏,用空格分隔。我需要一个查找查询,该查询同时搜索名字和姓氏

下面是一个场景

在DB中,我有以下对象

{ firstName: "Hemant Kumar", lastName: "Rajpoot" };

如果我收到“Hemant Kumar Rajpoot”,它应该匹配。如果可能,请不要给出带有聚集的解决方案。

您可以使用、和的组合

例如:

db.yourCollection.find({
  $expr: {
    $eq: [
      {$concat: ["$firstName", " ", "$lastName"]}, 
      "Hemant Kumar Rajpoot" // your full name to search here
    ]
  }
})

只需检查输入的字段(
firstname
lastname
)是否与数据库中的任何用户匹配即可

module.exports.checkFullName = (req, res, next) => {
    myCollection.findOne({ firstName: req.firstname, lastName: req.lastname },
        (err, user) => {
            if (!user)
                return res.status(404).json({ status: false, message: 'User not found' });
            else
                return res.status(200).json({ status: true,  user });
        }
    );
}
如果您使用的是最新的mongodb版本4.2

db.collection.find({
  "$expr": {
    "$regexMatch": {
      "input": { "$concat": ["$first", " ", "$last"] },
      "regex": "a",  //Your text search here
      "options": "i"
    }
  }
})

如果您想使用聚合进行此操作。这里有一个例子

db.user.aggregate(
   [
       {
            $project : {
                fullname: {$concat: ["$firstname", " ", "$lastname"]}
            },
        },
        {
            $match : {
                fullname: "your full name"
            }
        }
   ]
)

这篇文章可以是另一篇文章的复制品。检查这一个:非常好的答案,但唯一的问题是它的版本4.2,但我有4.0上server@HemantRajpoot您可以轻松地将其更新为最新版本。这不会引起任何问题。我们不能这样做,因为服务器访问,而不是我们这一方它的客户端救生员回答否,因为在$match管道中,查询正在执行完全相等的操作。但部分搜索也是可能的。修改$match条件,如$match:{fullname:{$regex:“firstname”}