neo4j-匹配节点并向其添加关系
如何向cypher查询返回的节点添加关系 我编写了一个查询,返回居住在同一地址的所有姓氏相同的person节点。现在我想在这些person节点之间添加一个关系,以指示它们是同一个人。下面的查询返回3个person节点,我想将第一个节点(由ORDER by返回)与其他2个节点之间的关系添加到一起neo4j-匹配节点并向其添加关系,neo4j,Neo4j,如何向cypher查询返回的节点添加关系 我编写了一个查询,返回居住在同一地址的所有姓氏相同的person节点。现在我想在这些person节点之间添加一个关系,以指示它们是同一个人。下面的查询返回3个person节点,我想将第一个节点(由ORDER by返回)与其他2个节点之间的关系添加到一起 MATCH (a:Address) <-[LIVES_AT]-(p:Person) WITH a as addnode, p.surname as psurname, COUNT(p.name_u
MATCH (a:Address) <-[LIVES_AT]-(p:Person)
WITH a as addnode, p.surname as psurname, COUNT(p.name_urn) as c
WHERE c > 1
MATCH (a2:Address{address_urn:addnode.address_urn})<-[LIVES_AT]- (p2:Person{surname:psurname})
WITH p2 as p2node
ORDER BY CASE
WHEN p2node.master_record = 'Y'
THEN
1
ELSE
2
END
WITH collect(p2node) as colp2node
RETURN colp2node
匹配(a:地址)1
匹配(a2:Address{Address\u urn:addnode.Address\u urn})类似的内容应该适合您:
MATCH (a:Address)<-[LIVES_AT]-(p:Person)
WITH a, p.surname AS psurname, COUNT(p.name_urn) AS c
WHERE c > 1
MATCH (a2:Address { address_urn:a.address_urn })<-[LIVES_AT]-(p2:Person { surname:psurname })
WITH p2
ORDER BY CASE WHEN p2.master_record = 'Y' THEN 1 ELSE 2 END
WITH collect(p2) AS colp2
WITH colp2[0] AS master, colp2[1..] AS others
UNWIND others AS other
MERGE (master)-[:HAS_ALIAS]->(other);
匹配(a:地址)1
匹配(a2:Address{Address\u urn:a.Address\u urn})(其他);
我使用MERGE
来避免重复关系
顺便说一句,仅仅因为两个人姓氏相同,住址相同,这通常并不意味着他们是同一个人。我希望你确信你所做的是适当的。干杯塞伯萨姆做了一件好事。。。是的,只是用姓氏匹配作为测试。。。为评论喝彩:)