繁体   English   中英

如何在Node.js MongoDB中执行搜索

[英]How to perform search in Node.js MongoDB

我正在尝试在节点js中的列表上执行搜索,下面的代码受此影响,

 exports.searchlistbyfirstname = function (req, res) {
  var params = req.params;
  var record= db.collection('profile');
  record.find( { $text: { $search: params.id} }, (err, result) => {
   if (err){ return console.log(err)
    }
      if(result){
            response = {status:'success',data:result};
        } else{
            response = {status:'fail'};
        }
      res.send(response);
  });

};

我正在尝试搜索firstname并且我确定自己输入错误。

谁能帮帮我吗

您可以尝试使用此query获取您的firstname

record.find({
  firstname: {
    $regex: params.id
  }
}, (err, result) => {
  if (err) {
    return console.log(err)
  }
  if (result) {
    response = {
      status: 'success',
      data: result
    };
  } else {
    response = {
      status: 'fail'
    };
  }
  res.send(response);
});

要执行文本搜索,请确保首先为搜索字段创建了文本索引。

喜欢:

db.collection('profile').createIndex( { firstName: "text" } );

然后您可以对该文件执行文本搜索。

// params.id should be like "shaishab"
// but better to use req.query.firstName instead of req.params.id
// and you should change your route for that
record.find({$text: {$search: params.id}}, (err, result) => { 
  if (err) {
    console.log(err)
    return res.status(400).send({status: 'fail', error: err});
  }
  if (result) {
    response = {status: 'success', data: result};
  } else {
    response = {status: 'fail'};
  }
  res.send(response);
});

或者没有创建文本索引,您可以使用$regex运算符搜索firstName

record.find({firstName: { $regex: req.params.id, $options: 'i' } }, (err, result) => { 
      if (err) {
        console.log(err)
        return res.status(400).send({status: 'fail', error: err});
      }
      if (result) {
        response = {status: 'success', data: result};
      } else {
        response = {status: 'fail'};
      }
      res.send(response);
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM