使用几个关键字在mongodb中搜索

时间:2017-08-18 12:50:51

标签: javascript node.js mongodb express mongoose

我正在使用节点js,mongoose,express和mongodb。

我创建了一个简单的表单,您在其中输入全名,并在数据库中搜索并返回您的其他详细信息。

是否可以仅使用整个名称中的几个单词进行搜索?例如如果用户想要搜索“abc xyz”,用户是否可以仅使用“abc”或“xyz”来执行相同操作

这是我原来的路线:

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}); }
  });
 }); 

是否可以这样做?如果是,那我该如何实现呢?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用正则表达式:

details.findOne({ fullname : /.*(?:abc|xyz).*/gi }, .....

答案 1 :(得分:1)

您可以使用正则表达式来部分匹配某些字段,如此

const query = {
    fullname: {
        $regex: req.query.name,
        $options: 'i'
    }
};

details.find(query, function(err, foundAsked){
  ...
})

查询中i的位置使其不区分大小写。

在使用部分搜索的情况下,我建议不要使用findOne,因为这可能会误导用户只返回一个结果,如果他/她打字让我们说{{1} }