考虑以下示例:
db.article.aggregate(
{ $group : {
_id : "$author",
docsPerAuthor : { $sum : 1 },
viewsPerAuthor : { $sum : "$pageViews" }
}}
);
这按作者字段分组并计算两个字段。
我有 $author = FirstName_LastName 的值。
现在,我不想按 $author 进行分组,而是想按具有相同姓氏的所有作者进行分组。
我尝试 $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" }
}}
);
实际上没有这样的方法提供这种功能,或者我找不到包含它的适当版本。我认为这不适用于 $regexp :http://docs.mongodb.org/manual/reference/operator/regex/ http://docs.mongodb.org/manual/reference/operator/regex/它只是用于模式匹配。
jira 中有一个改进请求:https://jira.mongodb.org/browse/SERVER-6773 https://jira.mongodb.org/browse/SERVER-6773
它处于开放未解决状态。
但
在 github 中我发现了这个讨论:https://github.com/mongodb/mongo/pull/336 https://github.com/mongodb/mongo/pull/336
如果你检查这个提交:https://github.com/nleite/mongo/commit/2dd175a5acda86aaad61f5eb9dab83ee19915709 https://github.com/nleite/mongo/commit/2dd175a5acda86aaad61f5eb9dab83ee19915709
它或多或少包含您可能拥有的方法。我并没有真正理解这种改进的意义:在 2.2.3 中它不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)