だから私は単一のサイファークエリから2セットを返そうとしています:
特定の親ノードがインデックスにある場合、
- 親ノードの子
- 子のない親ノード。
次のように、あるセットのインデックスにある親と別のセットのその子を返す同様のクエリを取得できました
START Parents = node:app_fulltext('name:"City"'),
MATCH Parents-[?:ChildOf]-Apps
RETURN collect(Apps.Title), collect(Parents.Name);
==> +--------------------------------------------------------------+
==> | collect(Apps.Title) | collect(Parents.Name) |
==> +--------------------------------------------------------------+
==> | ["Empty City 3D"] | ["Empty City 3D","Empty City 3D Fake"] |
==> +--------------------------------------------------------------+
これは私が望むものに近いです。ただし、Parents.Name から、Apps.Title コレクションに既に Children が含まれているアイテムを除外したいと考えています。
これは私が取得したい結果セットです。"Empty City 3D Fake" には子がないため、Parents.Name で返されます。
==> +--------------------------------------------------------------+
==> | collect(Apps.Title) | collect(Parents.Name) |
==> +--------------------------------------------------------------+
==> | ["Empty City 3D"] | ["Empty City 3D Fake"] |
Where r is null 句を追加したところ、何も返されなかったため、これを行うには 2 つの同一の開始親セット (Parents と Parents2) を追加する必要がありました。しかし、それは本当にぎこちないように見えるので、もっと良い方法があることを望んでいました.
START Parents = node:app_fulltext('name:"City"'),
Parents2 = node:app_fulltext('name:"City"')
MATCH Parents-[r?:ChildOf]-Children, Parents2-[:ChildOf]-Apps
Where r is null
return collect(Apps.Title), collect(Parents.Name);
==> +--------------------------------------------------------------+
==> | collect(Apps.Title) | collect(Parents.Name) |
==> +--------------------------------------------------------------+
==> | ["Empty City 3D"] | ["Empty City 3D Fake"] |
==> +--------------------------------------------------------------+