2016-08-11 20 views
0

多くのリレーションシップとノードがあります。我々はNeo4jデータベースからオブジェクトの配列としてデータを検索したい。Neo4jでオブジェクトの配列としてデータを取得

として、私たちは一致している場合:私たちは結果を得る

MATCH (user: user {name:"x"}) 
OPTIONAL MATCH (user)-[r]->(item) 
OPTIONAL MATCH (item)-[s]->(approver) 
RETURN user, item, approver 

として:私たちは、クライアント側で巨大な関係を処理しながら、複雑さを軽減するためにinorderをと同様の結果を取得する必要があり

[{user:{properties:{name:"x"}}, item:{properties:{name:"abc"}}, approver:{properties:{name:"a"}}}, 
{user:{properties:{name:"x"}}, item:{properties:{name:"abc"}}, approver:{properties:{name:"b"}]}}, 
{user:{properties:{name:"x"}}, item:{properties:{name:"xyz"}}, approver:{properties:{name:"c"}}}, 
{user:{properties:{name:"x"}}, item:{properties:{name:"xyz"}}, approver:{properties:{name:"d"}}} }] 

[{user:{properties:{name:"x"}}, item:{properties:{name:"abc"}}, approvers:[{properties:{name:"a"}}, {properties:{name:"b"}}]},  
{user:{properties:{name:"x"}}, item:{properties:{name:"xyz"}}, approvers:[{properties:{name:"c"}}, {properties:{name:"d"}}] }] 

どのようにするには?

答えて

1

あなたはリスト内のアイテムを収集する必要があるように聞こえます。これを試してみてください:

MATCH (user: user {name:"x"}) 
OPTIONAL MATCH (user)-[r]->(item) 
RETURN user, COLLECT(item) 

あなたはカンニングペーパーサイファーの上に行くとCOLLECT()関数と同様に、リスト操作を見直し、いくつかの時間を費やすことができます。あなたはあなたの説明に項目の潜在的な承認者を追加したよう

EDIT

が見えます。その場合は、ユーザーとアイテムごとにグループ化し、そのグループの承認者のコレクションを作成するように見えます。

MATCH (user: user {name:"x"}) 
OPTIONAL MATCH (user)-[r]->(item) 
OPTIONAL MATCH (item)-[s]->(approver) 
RETURN user, item, COLLECT(approver) AS approvers 
関連する問題