如何使用在哪里使用猫鼬查询数据库



我想为用户创建一个端点来搜索某些内容,所以我查询数据库,其中特定行包含用户搜索的文本,但$where一直给我一个错误,它不是一个函数

我尝试使用$where但无济于事

router.get('/mobile/courses/search/:search_text', async(req, res)=>{
    try {
        const search = await Course.find()
        search.$where(function () {
            return req.params.search_text.toLowerCase().includes(this.course_name.toLowerCase())
        })
        if (!search){
            return res.status(404).send({result: 'No Result found'})
        }
        res.status(200).send({result: search})
    }catch (e) {
        res.status(500).send({error: 'Unknown Error Occurred Try Again', codeerror: e.toString()})
    }
})

我希望能够在数据库中查询用户从特定列(course_name(中搜索的内容,并返回包含用户搜索的文本中至少三个字母的行的响应

首先为要搜索的字段编制索引

Course.index({ course_name: 'text' });

然后使用$regex

CourseModal
    .find({
        course_name: {
            $regex: searchString,
            $options: 'i'
        }
    })

您可以在查询中直接使用 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()})
    }
})

最新更新