以下の方法で、どのような方法が良いか教えていただきたいです。
人が行ったことのデータをログのように Mongodb に保存します
例えば
{
"date":"01-01-2002T08:20:30",
"task":"contact-lead",
"user":"username"
}
必要なのは、その日に完了したタスクの数を数え、それらをHighstock のようなグラフに入れることです。
以下の方法で、どのような方法が良いか教えていただきたいです。
人が行ったことのデータをログのように Mongodb に保存します
例えば
{
"date":"01-01-2002T08:20:30",
"task":"contact-lead",
"user":"username"
}
必要なのは、その日に完了したタスクの数を数え、それらをHighstock のようなグラフに入れることです。
次のコマンドは、1日あたりのタスク数を集計/カウントします。
db.col.group({
$keyf : function(doc) {
return { "day" : doc.date.getFullYear() + "/" + (doc.date.getMonth()+1) + "/" + doc.date.getDate() };
},
initial: {count:0},
reduce: function(obj, prev) { prev.count++; }
})
次に、必要に応じてフォーマットしてhighcharts APIに送信しますが、データが大量にあると速度が低下する可能性があるため、注意が必要です。
もう1つのオプションは、MapReduceを使用して集計コレクションを定期的に更新し、それをグラフのソースとして使用することです。
PHPやPythonなどのサーバー側スクリプトを使用して、mongodbクエリを使用してデータを集約します。
count()、$ where、$ gte、$ gtは、x日目に実行されたタスクの総数をクエリするために使用できる演算子になります。
たとえば過去30日間に実行されたタスクの数を見つける必要がある場合は、mongodbに相当する「groupby」SQLを使用する必要があるため、30のクエリを実行することはお勧めできません。この手法は「mapreduce」と呼ばれます。 '。
次に、チャートライブラリHighchartsの必要に応じて、WebページでPHP /Pythonを使用してチャートデータをjson/xml形式でレンダリングできます(または、jQueryベースのチャートの場合はjqplot.comを試すこともできます)。