我想为用户创建一个端点来搜索某些内容,因此我使用特定行查询数据库,其中包含特定行,该行包含了用户搜索的文本,但是$ where一直给我一个错误,提示它不是函数>
我尝试使用$ where但无济于事
<p>
@foreach($data as $dat)
{{$dat->zipcode}}
@endforeach
</p>
我希望能够查询数据库中用户从特定列(course_name)中搜索到的内容,并返回包含用户搜索文本中至少三个字母的行的响应
答案 0 :(得分:2)
首先索引要搜索的字段
Course.index({ course_name: 'text' });
然后使用$regex
CourseModal
.find({
course_name: {
$regex: searchString,
$options: 'i'
}
})
答案 1 :(得分:1)
您可以在查询中直接使用mongoDB $ regex选项来搜索文本:
router.get('/mobile/courses/search/:search_text', async(req, res)=>{
try {
const searchedItems = await Course.find({
course_name: {
$regex: req.params.search_text,
$options: 'i' // case insensitive
}
})
if (!searchedItems.length){
return res.status(404).send({result: 'No Result found'})
}
res.status(200).send({result: searchedItems})
}catch (e) {
res.status(500).send({error: 'Unknown Error Occurred Try Again', codeerror: e.toString()})
}
})