我将我们的 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 函数),但现在我正在尝试使用新的聚合框架来做到这一点。我尝试使用表达式运算符来实现逻辑,但到目前为止还不能让它工作。任何帮助/建议将不胜感激!