私は現在、ユーザーのリストを返すための次のサイファーを持っています。ユーザーに割り当てられているロールと、ロールの対象となるアプリケーションが含まれています。
MATCH (u:User)-[:HAS_ROLE]->(r:Role)-[:ROLE_OF]->(a:App)
RETURN u as User, COLLECT([r, a]) as Roles
これは、ユーザーとそのロールとアプリのコレクションを返しますが、コレクションは単に [roleA、appA、roleB、appA、roleC、appB...] です。
ロール、アプリ、ロール、アプリであると仮定してこのリストを処理すると [[roleA, appA], [roleB, appA], [roleC, appB]...] のようなものを返す方法はありませんか?私にとって良い練習のように。
ロールとアプリを個別のコレクションとして返すことはできますが、各ロールがどのアプリに割り当てられているかわかりません。これを実行する唯一の方法は、複数のクエリを実行することですが、これはやりたくありません。
おそらくWITHを使用するなど、より良い方法があるはずですが、Cypherは初めてです。
助けてくれて本当にありがとうございます :)