Regex 避免使用某些字符串的正则表达式代码

Regex 避免使用某些字符串的正则表达式代码,regex,mongodb,Regex,Mongodb,我正在从事ipython和mongodb项目,我对正则表达式有问题。 简而言之,我在db中有这样一个文档 { 'aa':'foo </FOO >' } 这段代码工作得和我预期的一样好。但是,我想过滤文档中的一些字符串,所以我想添加 match2 = {"$match" : {"aa" : / regex code here/}} 然后,db.collection.aggregate([match,project,unwind,match2]) 但它不会返回任何结果。如何修复它?M

我正在从事ipython和mongodb项目,我对正则表达式有问题。 简而言之,我在db中有这样一个文档

{ 'aa':'foo </FOO >' }
这段代码工作得和我预期的一样好。但是,我想过滤文档中的一些字符串,所以我想添加

match2 = {"$match" : {"aa" : / regex code here/}}
然后,
db.collection.aggregate([match,project,unwind,match2])


但它不会返回任何结果。如何修复它?

MongoDB还不支持投影中的
$regex
。有一个开放的JIRA票证将在某个时候解决这个问题,不过:

因此,此时您无法使用MongoDB从字段中提取字符串,除非您使用基于MongoDB的方法,当然,这种方法的功能稍逊

但是,您可以对所有文档进行筛选,以仅返回其中包含
“foo”
的元素,如下所示:

match2 = {"$match" : {"aa" : /foo/}}
然后,您可以使用一些客户端代码来提取匹配的部分,例如在JavaScript中:

var regEx = /(foo)/;
doc.aa = regEx.exec(doc.aa)[1]; // return first matching group

这太宽泛了,你能澄清一下你的问题吗?例如,编程语言,哪个数据库,等等。字符串最初是如何到达的?好吧。我会把它更新清楚
var regEx = /(foo)/;
doc.aa = regEx.exec(doc.aa)[1]; // return first matching group