0

コレクション内のすべてのドキュメントに親ポインター(例:Parent Links)がある既存のmongoデータベースがあります。そのため、木の上を歩くのは簡単で、一般的な操作です。

ただし、コレクション内のすべてのツリールートで開始し、各ツリーのすべてのリーフノードからデータを生成するマップリデュースジョブを作成したいと思います。したがって、mapreduceジョブの出力コレクションは一連の

{<root_id>, [<information from leafs associated with root_id>, ...]}.

非常にありがたい例があれば。ツリーの2番目のレベルを印刷するという私の単純な試みは失敗しています。map関数内でクエリを実行できませんか?

mapf = function() {
    db.collection.find({"parent": this._id}).forEach(
         // This doesn't seem to work
    )
}
4

1 に答える 1

1

map関数内でクエリを実行できませんか?

一種ですが、しないでください。

重要な問題の1つは、「クエリはどこに行くのか」です。。そのdb参照はローカルデータベースへの参照ですが、シャーディングでは機能しません。

もう1つの問題は、それが機能したとしても、非常に危険な作業のべき乗を取得できることです。(ループをどのように処理しますか?

この種の問題については、Neo4Jのようなグラフデータベースを調べることをお勧めします。

于 2012-06-19T23:43:21.320 に答える