Mongoose创建正则表达式并在模型中搜索博客

时间:2017-07-04 10:31:10

标签: node.js regex mongodb mongoose

我想在我的博客中实现搜索到目前为止我所做的是创建了一个具有搜索表单的博客,该搜索表单将字符串作为输入并获取请求。

现在,在该请求中,我有一个函数可以在我的博客头部或正文中搜索字符串。

因此,如果用户键入" foo bar"我得到的结果是" foo bar"

但我想要的是这个函数搜索每个空格分隔的单词和AND结果。即搜索" foo",搜索" bar"并将结果相交得到 帖子有" bar foo"," foo hello bar"," bar hello foo"

function(searchQuery, callback){
    var query = { 
        $or:[
                { head: {$regex: searchQuery, $options: "i"} },
                { body: {$regex: searchQuery, $options: "i"} } 
            ]
    };
    Post.find(query, {sort: { date: -1 }, page: i, limit: 5 }, callback);
}

获取请求的URL如下

localhost:5000/blog/?searchQuery=FOO+BAR

如果还有其他方法,我愿意接受建议。

1 个答案:

答案 0 :(得分:0)

找到答案! 需要创建我的头部和身体textindex https://docs.mongodb.com/manual/core/index-text/

并在函数

中使用此代码
function(searchQuery, callback){

    var queryString = '\"' + searchQuery.split(' ').join('\" \"') + '\"';
    var query = { $text: { $search: queryString } };
    Post.find(query, {sort: { date: -1 }, page: i, limit: 5 }, callback);

}

不需要正则表达式!