Web サーバーのログをMongoDBに保存すると、スキーマは次のようになります。
[
{
"_id" : 12345,
"url" : "http://www.mydomain.com/xyz/abc.html",
....
},
....
]
コレクションを集計パイプラインに渡す前に、オペレーターを使用して$project
このスキーマを少し再形成しようとしています。基本的に、後で group-by を実行するために使用される「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 関数に設定することにより)、新しい集計フレームワークを使用してこれを実行しようとしています。式演算子を使用してロジックを実装しようとしましたが、これまでのところ機能しませんでした。どんな助け/提案も大歓迎です!