我们说我有节点try...catch
和节点USERs
。它们可以通过关系CARs
连接。
我想通过LIKE
的列表清单返回CARs
的所有LIKEd
。
目前我有这个问题:
USERs
然而,返回Sara,John或两者都喜欢的所有汽车。我想把它限制在只有两个人喜欢的汽车上。
更新 这是我到目前为止所提出的,但这种方法并不允许我使用一系列名称作为输入,我可以使用它,但是很想找到一个可以采取的解决方案数组作为一个参数,任何帮助非常感谢。
MATCH (c:CAR)<-[r:LIKES]-(u:User)
WHERE u.username IN ['Sara', 'John'] RETURN e, u
答案 0 :(得分:0)
我认为此查询将满足您的需求:
def[0]
答案 1 :(得分:0)
有点棘手。我发现最简单的方法是利用这个:
ALL(x IN y EXERE EXISTS(relationship))
假设有Sara,John和Bill的图表,其中三个都像野马汽车,而John和Bill就像Pintos,这个代码将返回Mustang汽车,这是列表中所有用户喜欢的唯一汽车:
WITH ['Sara', 'John', 'Bill'] AS usernames
MATCH (c:CAR)
WHERE ALL(username IN usernames WHERE EXISTS((:User{name:username})-[:LIKES]->(c)))
RETURN c
编辑: 或者,您可以尝试这一点,首先匹配列表中的用户,匹配这些用户喜欢的汽车,然后将其缩小到只有所有这些用户喜欢的汽车。
MATCH (u:User) WHERE u.name IN ['Sara', 'John', 'Bill']
WITH u, COLLECT(u) AS users
MATCH (u)-[:LIKES]->(c:CAR)
WHERE ALL(user IN users WHERE EXISTS((user)-[:LIKES]->(c)))
RETURN c
您需要对实际数据集进行分析,以了解哪种方法效果最佳。