gpt4 book ai didi

node.js - 部分文本搜索(查找)在我的 Express 应用程序上不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:35 25 4
gpt4 key购买 nike

目前,我有以下文本搜索路线。

router.post("/visit", middleware.isLoggedin, function(req,res){
subject.find({Subject_Name: req.body.user} ).sort('Visit_date').exec(function(err,returnedsubjects){
if(err){
console.log(err);
} else {
console.log(returnedsubjects);
res.render("visit",{returnedsubjects: returnedsubjects);
}
});
});

效果很好。但正如您所看到的,subject_name 必须完全匹配。例如,我需要“david”或“David”来查找主题名称=“David Warner”的集合。

尝试了这个建议。 How to query MongoDB with "like"? 。没有成功。

尝试过这个subject.find({Subject_Name:/req.body.user/} )和这个subject.find({"Subject_Name":/req.body.user/} )

运气不好:(。

感谢任何帮助。谢谢!

最佳答案

使用以下查询在文档的Subject_Name 字段上创建文本索引:

subject.index({Subject_Name:"text"})

然后你可以使用 $text 和 $search 进行搜索,如下所示:

 var text = req.body.user;
subject.find({ $text:{$search: text} });

假设您已经创建了以下架构:

  var subjectschema = new mongoose.Schema({ Subject_Name: { type: String, index: true },etc)}

您必须在架构文件中创建索引,这样您的架构文件将如下所示:

     var subjectschema = new mongoose.Schema({ 
Subject_Name: { type: String, index: true },
etc
)};

subjectschema.index({Subject_Name:"text"};

然后开始在 route 搜索:

 subjectschema.find( {$text:{$search: req.body.user} }).then(result=>{
if (result)
{
//do something with your code
console.log(result);
}

})

现在,如果我们搜索“david”,上面的查询将返回在其“Subject_Name”字段中包含关键字“david”的以下文档。

关于node.js - 部分文本搜索(查找)在我的 Express 应用程序上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com