Neo4j Cypher关系存在和ID的集合

时间:2017-09-08 11:50:37

标签: neo4j cypher

我有一个以下Neo4j Cypher查询,检查Userentity之间是否存在关系并返回布尔结果:

MATCH (u:User) WHERE u.id = {userId} MATCH (entity) WHERE id(entity) = {entityGraphId} RETURN EXISTS( (u)<-[:OWNED_BY]-(entity) )

请帮助重写此查询,以便能够接受{entityGraphIds}而不是单个{entityGraphId}的集合,并检查User与具有这些{entityGraphIds}的任何实体之间是否存在关系user1

例如,我有entity1entity2user1entity2{user.id}有关系。我会像{userId}{entity1.id, entity2.id} {entityGraphIds}那样通过import pandas as pd broken_df = pd.read_csv("..\data\bikes.csv") ,此查询应该返回true。

1 个答案:

答案 0 :(得分:2)

我相信你可以简单地使用IN operator。考虑这些参数:

:params {userId: 1, entityGraphIds : [2,3,4]}

然后,查询:

MATCH (u:User) WHERE u.id = {userId}
MATCH (entity) WHERE id(entity) IN ({entityGraphIds})
RETURN EXISTS( (u)<-[:OWNED_BY]-(entity) )

修改

如果您在true连接至少1个实体时尝试返回:User,则可以将查询简化为:

OPTIONAL MATCH (u:User)<-[:OWNED_BY]-(entity:Entity)
WHERE u.id = {userId} AND id(entity) IN ({entityGraphIds})
RETURN u IS NOT NULL