Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 猫鼬在短语中寻找准确的单词_Mongodb_Mongoose - Fatal编程技术网

Mongodb 猫鼬在短语中寻找准确的单词

Mongodb 猫鼬在短语中寻找准确的单词,mongodb,mongoose,Mongodb,Mongoose,现在,当我搜索文本时,它正在使用以下代码搜索每个字符: model.find( { title: { $regex: /word/i } } ) 但结果就像“word”、“word123”或“333word3”,我只想要包含“word”单词的标题。例如:“这是一个单词”你没有排除你说的那些选项 您需要: 将正则表达式改为类似于/word/i的形式如果你想在单词周围加一个空格,请注意,如果像word-word2这样的组合是相关的,那么你也必须在你的正则表达式中说明它们 使用Mongo的选项,因此

现在,当我搜索文本时,它正在使用以下代码搜索每个字符:

model.find( { title: { $regex: /word/i } } )
但结果就像“word”、“word123”或“333word3”,我只想要包含“word”单词的标题。例如:“这是一个单词”

你没有排除你说的那些选项

您需要:

  • 将正则表达式改为类似于
    /word/i
    的形式如果你想在单词周围加一个空格,请注意,如果像word-word2这样的组合是相关的,那么你也必须在你的正则表达式中说明它们

  • 使用Mongo的选项,因此您必须在该字段上构建一个。请记住,Mongo在索引文本字段时会对单词进行排序,这意味着像
    cars
    这样的单词将变成
    car
    ,这意味着如果需要精确匹配,这可能不是最佳选择

  • 简言之,允许您使用
    \bword\b

    Model.find({
      title: {
        $regex: "\\bword\\b"
      }
    })
    
    //or
    
    Model.find({
        title: /\bword\b/
    })
    
    如果要忽略以下情况:
    foo-word
    bar:word
    word-buz
    ,请使用以下选项:

    Model.find({
      title: {
        $regex: "\\b(^|\\s|[^\\W])word(\\s|[^\\W]|$)\\b"
      }
    })
    

    非常感谢,它很有效。非常感谢您的帮助,根据需要重新编写或编辑正则表达式看起来很复杂。您能推荐文档或来源来理解它吗?@slim-Sure,及;-)