在Cypher查询中我有多个MATCH
我会将WITH
的ID传递给我的查询的第二部分
小号
MATCH user-[:friend*2..3]-other
WHERE NOT user-[:friend]-other
WITH user,other
MATCH user-[:played_in]->uni<-[:played_in]-other
CREATE UNIQUE user-[k:may_know]-other
SET k.w = (k.w) + 1
MATCH user-[:friend*2..3]-other
WHERE NOT user-[:friend]-other
WITH user,other
MATCH user-[:lives_in]->c<-[:lives_in]-other
CREATE UNIQUE user-[k:may_know]-other
SET k.w = (k.w) + 1
在第二部分中,我应该检查另一个MATCH
的结果,并为每个匹配做一些更新任务
我可以为每个第二部分重复第一部分,但有没有办法避免从第一部分改变结果并重复使用几次? 像复制这样的东西会产生另一种识别或什么?
答案 0 :(得分:0)
如果您想匹配多种关系,例如playing_in,lives_in,你可以这样做我想:
MATCH user-[:friend*2..3]-other
WHERE NOT user-[:friend]-other
WITH user,other
MATCH p=user-[r1:played_in|:lives_in]->(l)<-[r2:played_in|:lives_in]-other
WHERE l:University or l:City
WHERE type(r1) = type(r2)
FOREACH (path IN p |
MERGE startNode(path)-[k:may_know]-endNode(path)
ON CREATE SET k.w = 1
ON MATCH SET k.w = (k.w) +1
)