Javascript 在mongodb中仅使用几个关键字进行搜索
我使用的是NodeJS、mongoose、express和mongodb 我创建了一个简单的表单,在其中输入您的全名,它会在数据库中搜索并返回您的其他详细信息 是否可以只使用全名中的几个单词进行搜索?e、 g.如果用户希望搜索“abc xyz”,用户是否可以仅使用“abc”或“xyz”进行搜索 这是我最初的路线:Javascript 在mongodb中仅使用几个关键字进行搜索,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我使用的是NodeJS、mongoose、express和mongodb 我创建了一个简单的表单,在其中输入您的全名,它会在数据库中搜索并返回您的其他详细信息 是否可以只使用全名中的几个单词进行搜索?e、 g.如果用户希望搜索“abc xyz”,用户是否可以仅使用“abc”或“xyz”进行搜索 这是我最初的路线: app.get("/",function(req,res){ var name = req.query.name; details.findOne({fullname:nam
app.get("/",function(req,res){
var name = req.query.name;
details.findOne({fullname:name},function(err,foundAsked){
if(err){console.log("ERROR!!!");}
else{res.render("Details.ejs",{foundAsked:foundAsked,name:name}); }
});
});
可以这样做吗?如果可以,那么我如何实现它?可以,您可以使用正则表达式:
details.findOne({ fullname : /.*(?:abc|xyz).*/gi }, .....
您可以使用正则表达式在某些字段上进行部分匹配,如
const query = {
fullname: {
$regex: req.query.name,
$options: 'i'
}
};
details.find(query, function(err, foundAsked){
...
})
其中查询中的i
使其不区分大小写
在使用部分搜索的情况下,我建议不要使用
findOne
,因为如果用户键入(比如a
),那么可能会误导用户只返回一个结果。据我所知,为了找到某个元素,您必须搜索该元素。但是,您可以做的一件事是在添加到db时创建另一个名为“昵称”或其他内容的元素,将查询设置为搜索名称或昵称。您可以查看Mongo的文本搜索功能,它工作正常。只是好奇,如果某人的名字相同,是否可以解决任何冲突?