如何基于子字符串数组上的字符串匹配查找猫鼬文档

时间:2019-06-21 16:12:44

标签: javascript regex string mongodb mongoose

说我有一个子字符串搜索参数数组,像这样:

const subStrings = ["foo", "bar", "baz", "whatever"];

我必须找到所有字符串类型的字段包含一个或多个所提供子字符串的文档。

所以,如果我有这样的架构:

const sampleSchema = new mongoose.Schema({
  fieldOne: {
    type: String,
    ...
  }
});

const Sample = mongoose.model('Sample', sampleSchema);

我在其他问题中也看到过此操作:

    Sample.find ({
         fieldOne: { $regex: substrings, $options: 'i' }
    })

但是我只看到substrings是string类型而不是字符串数组的情况下有效。

仍然可以使用经过修改的正则表达式来完成此操作,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

您可以将管道分隔的正则表达式与关键字列表一起使用,如下所示:

const subStrings = ["foo", "bar", "baz", "whatever"];
const regex = subStrings.join("|");


 Sample.find ({
   fieldOne: { $regex: regex, $options: 'i' }
});