map reduce (参照) で可能であることは知っていますが、グループ (具体的にはkeyf
関数内) を使用して 2 つのコレクションを結合できるかどうか疑問に思っていました。
MYCOLL.collection.group(:keyf => "function(doc) { var var2Item=db.mycoll2.find({\"_id\":doc.my_sub_id}); var2=var2Item.join_var; return {'myreturn': doc.var1 + var2 }; }",
:initial => { :r => 0 },
:reduce => "function(doc,prev) { prev.r += +1; }",
:cond => {( ...my_conditions...)})
私も試してみました
var2=doc.my_sub_id.join_var
どちらも機能していないようです。私は Ruby ドライバーを使用していますが、クエリは (実質的に) 生であるため、それほど重要ではありません。