4

セットのすべてのノードと関係を持つノードを取得するクエリを作成するにはどうすればよいですか。例えば:

START n=node:people("username:*"), 
g=node:groups("groupname:A groupname:B") 
MATCH n-[:M]->g 
RETURN n

これは、AまたはBとの関係を持つユーザーを返します。しかし、AB との関係を持つユーザーが必要です。しかし、その方法がわかりません。

編集:

A と B だけでなく、任意の数のグループに対してこれを行う必要があります。インデックス構文を使用している理由は、これがユーザー入力によるものであるため、次のようになる可能性があります。

START n=node:people("username:*"), 
g=node:groups("groupname:*") 
MATCH n-[:M]->g 
RETURN n

そして、すべてのグループと M 関係を持つユーザーを返す必要があります。

4

2 に答える 2

3
START n=node:people("username:*"), 
g=node:groups("groupname:*") 
with n, collect(g) as groups
MATCH n-[:M]->ug
with n, collect(ug) as user_groups
where ALL(g in groups WHERE g in user_groups)
RETURN n

このように動作する可能性もあります(より高速なはずです)

START n=node:people("username:*"), 
g=node:groups("groupname:*") 
with n, collect(g) as groups
MATCH n-[:M]->ug
WHERE ug in groups
with n, count(*) as found, length(groups) as group_count
WHERE found = group_count
RETURN n
于 2013-04-12T20:59:59.880 に答える