use*_*121 9 regex mongodb aggregation-framework
请考虑以下示例:
db.article.aggregate(
{ $group : {
_id : "$author",
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}}
);
Run Code Online (Sandbox Code Playgroud)
这个由作者字段分组并计算两个字段.
我有$ author = FirstName_LastName的值.现在不是按$ author分组,而是希望由共享相同LastName的所有作者进行分组.
我试过$ regex在'_'后按所有匹配的字符串分组
$author.match(/_[a-zA-Z0-9]+$/)
db.article.aggregate(
{ $group : {
_id : "$author".match(/_[a-zA-Z0-9]+$/),
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}}
);
also tried the following:
db.article.aggregate(
{ $group : {
_id : {$author: {$regex: /_[a-zA-Z0-9]+$/}},
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}}
);
Run Code Online (Sandbox Code Playgroud)
实际上没有这样的方法提供这种功能,或者我找不到包含它的适当版本.我认为这不适用于$ regexp:http://docs.mongodb.org/manual/reference/operator/regex/它只是用于模式匹配.
jira中有一项改进请求:https://jira.mongodb.org/browse/SERVER-6773
它处于未解决的状态.但
在github我找到了这个讨论:https://github.com/mongodb/mongo/pull/336
如果你检查这个提交:https://github.com/nleite/mongo/commit/2dd175a5acda86aaad61f5eb9dab83ee19915709
它或多或少地包含了您可能拥有的方法.我并没有真正理解这种改进的状态:在2.2.3中它不起作用.