私はノードUSERs
とノードCARs
を持っているとしましょう。彼らは関係LIKE
によって接続することができます。ノードのリストとの関係を持つノードを見つける
LIKEd
のCARs
を返信したいのですが、それはUSERs
です。
MATCH (c:CAR)<-[r:LIKES]-(u:User)
WHERE u.username IN ['Sara', 'John'] RETURN e, u
しかしサラ、ジョンのいずれかまたは両方に好かれているすべての車を返します。
は現在、私はこのクエリを持っています。私はそれだけで好きな車に制限したいと思います。
UPDATE:ここ は、私がこれまでに思い付いたのですが、このアプローチは、私は、入力として名の配列を使用することはできません、私はそれで動作することができますが、その解決策を見つけるのが大好きですparamとして配列をとることができます。
MATCH (user:USER) WHERE user.username IN ['Sara', 'John']
WITH COLLECT(id(user)) AS user_ids
MATCH (user:USER)-[:LIKES]->(car:CAR)
WHERE id(user) IN user_ids
WITH car, user_ids, COLLECT(id(user)) as ids_of_users_that_like_car
WHERE ALL(user_id IN user_ids WHERE user_id IN ids_of_users_that_like_car)
RETURN car