在MongoDB中使用带有文本搜索的正则表达式

时间:2014-05-25 13:10:48

标签: node.js mongodb

我在集合中的'num'字段上创建了一个文本索引。现在,在传递字符串以从文本索引中搜索时,我需要使用必须作为字符串传递给$ search变量的正则表达式。

我当前的查询工作正常,但是当我向其添加正则表达式时它不起作用。

当前查询:

db.collection.find({$text:{$search:"1234 6789"}},{'id':1})

我需要在$ search中添加一个正则表达式/类似查询,使其类似于

db.collection.find({$text:{$search:"/1234/ /6789/"}},{'id':1})

我从数据库中获取包含“1234”或“6789”之类的模式的所有值。

我确实尝试了查询,但它给了我一个$ search需要一个字符串错误:

db.collection.find({$text:{$search:/1234/}},{'id':1})

1 个答案:

答案 0 :(得分:3)

要实现这一点,您应该使用$ regex MongoDB运算符:

// Without options
db.collection.find({num: /1234|5678/i});

// Separate options property
db.collection.find({num: {$regex: /1234|5678/, $options: 'i'}});

要在正则表达式中添加多个术语,请使用|操作

$regex docs and examples

编辑:

要使用值数组查询记录,可以使用$in运算符:

$in docs and examples