我有一个以下Neo4j Cypher查询,检查User
和entity
之间是否存在关系并返回布尔结果:
MATCH (u:User) WHERE u.id = {userId} MATCH (entity) WHERE id(entity) = {entityGraphId} RETURN EXISTS( (u)<-[:OWNED_BY]-(entity) )
请帮助重写此查询,以便能够接受{entityGraphIds}
而不是单个{entityGraphId}
的集合,并检查User
与具有这些{entityGraphIds}
的任何实体之间是否存在关系user1
。
例如,我有entity1
和entity2
,user1
。 entity2
与{user.id}
有关系。我会像{userId}
和{entity1.id, entity2.id}
{entityGraphIds}
那样通过import pandas as pd
broken_df = pd.read_csv("..\data\bikes.csv")
,此查询应该返回true。
答案 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