2016-06-29 21 views
1

Cypherには、指定された隣接ノードを持つCONVERSATIONラベルを持つ単一のノードを見つけることができるクエリを書き込もうとしています。隣接ノードは、ラベルがUSERのユーザーと「username」というプロパティーです。 クエリでは、「username」のリストが与えられています。希望するのは、ネームとして与えられたリストのユーザ名を持つすべてのユーザをそのネイバーとして持つ会話ノードを見つけることです。 私はいくつかのクエリを試しましたが、私が望むものを返さない。どのようにクエリがどのように見えるか考えている人はいますか?Cypherは、指定された隣接ノードを持つノードを返します

MATCH (c:Conversation) 
WHERE ALL(x IN {users} WHERE (:User {name:x})-[:IN_CONVERSATION]->(c)) 
RETURN c 

あなたがのNeo4jブラウザでユーザ名を渡すことで、クエリをテストする場合:あなたは{users}パラメータとして与えられたユーザ名を渡しているし、ユーザーとの会話の間の関係がIN_CONVERSATION命名されたと仮定すると、

答えて

3

別の解決策は、第1のユーザーを一致させることです

WITH ["adam","john","sally"] AS users 
MATCH (c:Conversation) 
WHERE ALL(x IN users WHERE (:User {name:x})-[:IN_CONVERSATION]->(c)) 
RETURN c 

などのために、あなたは WITHでパラメータをシミュレートすることができます
MATCH (u:User) WHERE u.name IN {users} 
MATCH (c:Conversation) 
WHERE ALL(x IN collect(u) WHERE (x)-[:IN_CONVERSATION]->(c)) 
RETURN c 
関連する問題