Mongodb正则表达式搜索,但不返回所有文档

时间:2018-08-10 04:41:54

标签: mongodb mongodb-query aggregation-framework

我正在尝试在下面的收藏夹中搜索字符串

      {
        question: "What is your least favorite thing about living in the USA?",
        description: "aaaa"
    },
    {
        question: "What is the saddest thing a casino dealer has seen at their table?",
        description: "bbbb"
    }

我能够通过使用

来做到这一点
db.questions.aggregate(
   [
     { $match: { question_title: { $regex: 'what', $options: "i" } }
   ]
)

,我收到了两个文件。但是,当我使用关键字

'what USA'

我没有收到任何结果。我的预期结果是

"What is your least favorite thing about living in the USA?"

您能建议我使用一个正则表达式吗,以便我的任何关键字与问题文档匹配时都能得到结果?

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

conda install -c anaconda beautifulsoup4

这是不区分大小写的db.questions.aggregate([ { $match: { question: { $regex: '(?i)(:s|usa|what)', $options: "i" } } } ]) 匹配项,当前查找(?i)usa

您可以play with the regEx more here

答案 1 :(得分:1)

动态正则表达式:

1。此正则表达式不匹配“ ua what”的确切单词返回结果:

var searchString = 'usa what';
    var regexStr = '(?i)(:s|' + searchString.split(' ').join('|')+')';
    db.getCollection('searchQuestion').aggregate(
       [
         { $match: { question: { $regex: regexStr, $options: "i" } } },

       ]
    );

2。对于完全匹配的单词。

示例:

var searchStringg = 'usa what';
 var regexStrr = '\\b' + searchStringg.split(' ').join('\\b|\\b')+'\\b';
db.getCollection('searchQuestion').aggregate(
   [
     { $match: { question: { $regex: regexStrr, $options: "i" } } },

   ]
)