【问题标题】:Mongoose creating a regular expression and searching in model for blog猫鼬创建正则表达式并在模型中搜索博客
【发布时间】:2017-12-07 18:47:21
【问题描述】:

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

现在在那个请求中,我有一个函数被调用来搜索我的博客头部或正文中的字符串。

因此,如果用户键入“foo bar”,我会得到包含“foo bar”的结果

但我想要的是这个函数搜索每个空格分隔的单词和结果。即搜索“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);
}

get请求的url如下

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

如果有其他方法可以做到这一点,我愿意接受建议。

【问题讨论】:

    标签: node.js regex mongodb mongoose


    【解决方案1】:

    找到答案了! 需要为我的头部和身体创建一个 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);
    
    }
    

    不需要正则表达式!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-05
      • 2021-06-04
      • 2021-08-02
      • 1970-01-01
      • 2021-04-01
      • 2017-06-15
      • 1970-01-01
      • 2023-01-30
      相关资源
      最近更新 更多