をマッピングするために、私は削減/マップに新しいですし、それに私の私の(遅い)アプリケーションロジックを実行する代わりに、削減/マップを使用して、以下のデータを収集する方法を把握しようとしている:どのように2つのMongoDBのコレクションを削減/
私はコレクション 'tasks'に1対nの関係を持つコレクション 'projects'を持っています。今度は、最初にプロジェクトが最も多く、最後にプロジェクトが最も少ないプロジェクト名を私に提供する一連の結果を受け取りたいと思います。
あるいはさらに良いまた、すべてのプロジェクトは、プロジェクト名は一意であると仮定すると(持っているどのように多くの作業を私に伝えハッシュの配列:マップの
[project_1: 23, project_2: 42, project_3: 82]
を私はのようなものを試してみました:
map = function() {
emit(this.project_id, { count:1 });
}
還元:
reduce = function (key, values) {
var sum = 0;
values.forEach(function(doc){ sum += 1; });
return { count:sum };
}
私はこれを私の仕事のコレクションに対して解雇しました:
var mr = db.tasks.mapReduce(map, reduce, { out: "results" });
しかし問い合わせるとき、私は重大な結果を得る:
db[mr.result].find();
を私はRailsの上Mongoidを使用していて、完全に失われています。誰かが私を正しい方向に向けることができますか?
Thxです。 フェリックス