首页 > 解决方案 > 实体列表之间存在关系

问题描述

可以使用以下查询找出两个用户之间的关系。

RETURN EXISTS( (:User{_id:'User/123'})-[:Link]-(:User{_id:'User/567'}) )

如果需要针对以下查询的查询列表运行它怎么办?我想检查关系是否存在

MATCH p=(u:User{_id:'User/8199'})-[r:Link]-(u1:User)
WHERE u1._id in ['12317291','User/09563','User/392942','User/24974','User/720']
RETURN p

标签: neo4jcypher

解决方案


您可以匹配第一次使用,然后遍历 lest 并测试列表中每个其他用户的存在。

MATCH (u:User {_id: 'User/8199'})
WITH u
UNWIND ['12317291','User/09563','User/392942','User/24974','User/720'] | u1] AS other_user
RETURN other_user, exists((u)-[:Link]->(:Test {name: other_user}))

或者,如果您希望之后匹配实际用户,您可以执行类似的操作。匹配第一个用户,测试与用户列表的关系并返回匹配集合。

MATCH (u:User {_id: 'User/8199'})
RETURN [(u)-[:Link]->(u1:User) 
  WHERE u1._id IN
  ['12317291','User/09563','User/392942','User/24974','User/720'] | u1] AS matches

推荐阅读