我正在从事ipython和mongodb项目,并且我的正则表达情况有问题。简而言之,我在DB
中有这样的文档{ 'aa':'foo </FOO >' }
我的问题是,RegexCode应该如何仅打印" Foo"并避免'&lt;'/foo>?
到目前为止,我已经这样做了:
db.collection.aggregate([match, project, unwind])
此代码按照我的预期运行良好。但是,我想在文档中过滤一些字符串,所以我想添加
match2 = {"$match" : {"aa" : / regex code here/}}
然后,db.collection.aggregate([match, project, unwind, match2])
但没有返回。如何修复它?
mongoDB不支持投影中的$regex
。但是,有一张开放的JIRA票,可以在某个时候解决此问题:
https://jira.mongodb.org/browse/server-11947
因此,除非您选择基于$ substring的方法,否则您目前无法使用MongoDB从字段中提取字符串。
但是,您可以将所有文档过滤以仅用 "foo"
返回元素,例如:
match2 = {"$match" : {"aa" : /foo/}}
然后,您可以使用一些客户端代码来提取匹配零件,例如在JavaScript中:
var regEx = /(foo)/;
doc.aa = regEx.exec(doc.aa)[1]; // return first matching group