統計を抽出する必要があるかなり大きなMongoDBを入手しました。これは、MapReduceクエリを実行して購入します。
問題は、コレクション全体を使用する代わりに、たとえばstatus:'drafted"を使用するようにクエリを絞り込む必要があることです。
これは私のMap/Reduceコードです(Codeigniterを使用しています):このクエリの最後の手順を実行しようとしましたが、結果が得られないため、構文を間違って追加したと思います:http: //cookbook.mongodb.org/patterns/ unique_items_map_reduce/。
$map = new MongoCode ("function() {
day = Date.UTC(this.created_at.getFullYear(), this.created_at.getMonth(), this.created_at.getDate());
emit ({day: day, _id: this._id}, {created_at: this.created_at, count: 1});
}");
$reduce = new MongoCode ("function( key , values ) {
var count = 0;
values.forEach (function(v) {
count += v['count'];
});
return {count: count};
}");
$outer = $this->cimongo->command (array (
"mapreduce" => "documents",
"map" => $map,
"reduce" => $reduce,
"out" => "stats_results"
));
$map = new MongoCode ("function() {
emit(this['_id']['day'], {count: 1});
}");
$reduce = new MongoCode ("function( key , values ) {
var count = 0;
values.forEach (function(v) {
count += v['count'];
});
return {count: count};
}");
$outer = $this->cimongo->command (array (
"mapreduce" => "stats_results",
"map" => $map,
"reduce" => $reduce,
"out" => "stats_results_unique"
));