Neo4j对标识符执行多项任务

时间:2014-08-19 17:40:32

标签: neo4j cypher

在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的结果,并为每个匹配做一些更新任务

我可以为每个第二部分重复第一部分,但有没有办法避免从第一部分改变结果并重复使用几次? 像复制这样的东西会产生另一种识别或什么?

1 个答案:

答案 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
    )