我把我们的Web服务器日志存储在MongoDB中,模式看起来类似于以下内容:
[
{
"_id" : 12345,
"url" : "http://www.mydomain.com/xyz/abc.html",
....
},
....
]
我正在尝试使用$project
操作符,在将我的集合通过聚合管道之前,对此模式进行一些重塑。基本上,我需要添加一个名为"type"的新字段,该字段稍后将用于执行分组操作。新字段的逻辑非常简单。
if "url" contains "pattern_A" then set "type" = "sales lead";
else if "url" contains "pattern_B" then set "type" = "existing client";
...
我认为它可能是这样的:
db.weblog.aggregate(
{
$project : {
type : { /* how to implement the logic??? */ }
}
}
);
我知道如何使用map-reduce完成此操作(通过将“keyf”属性设置为实现上述逻辑的自定义JS函数),但现在正在尝试使用新的聚合框架来完成此操作。我尝试使用表达式运算符来实现该逻辑,但到目前为止还没有成功。非常感谢任何帮助/建议!