次の例を考えてみましょう。
db.article.aggregate(
{ $group : {
_id : "$author",
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}}
);
これは、作成者フィールドごとにグループ化され、2つのフィールドを計算します。
$ 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" }
}}
);