Javascript 名字和姓氏在mongoDB中合并搜索
我在MongoDB中存储了两个字段FirstName和LastName。从前端,我收到一个字符串,其中包含名字和姓氏,用空格分隔。我需要一个查找查询,该查询同时搜索名字和姓氏 下面是一个场景 在DB中,我有以下对象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
{ 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”}