我是Cypher(和Stackoverflow)的新手,并且无法根据共享属性键在节点之间创建关系。
我想做这样的事情:
MATCH (a:Person)-->()<--(b:Country)
WHERE HAS (a.id) AND HAS (b.id) AND a.id=b.id
CREATE (a)-[:LIVES]->(b);
在Country节点和Person节点之间创建一个关系,它们共享相同的id。
以上内容在运行时不会产生错误,但也不会创建任何关系,我知道ID应该匹配。
非常感谢!!
编辑:
我想我知道出了什么问题 - 我要求匹配与彼此有关系的节点,但没有设置关系,因此结果为0。我现在尝试过:
MATCH (a:Person),
(b:Country)
WHERE HAS (a.id) AND HAS (b.id) AND a.id=b.id
CREATE (a)-[:LIVES]->(b);
并且查询正在运行。它是一个很大的数据集,所以可能需要一段时间......
答案 0 :(得分:3)
那很有用。不得不减少我的数据集的大小(从64k节点下降),因为Neo4j需要花费太长时间来处理,但是一旦我有一个较小的设置它就可以正常工作。
答案 1 :(得分:0)
为将来的Google员工提供的少量补充。
根据帮助files(自3.4版开始)
has()函数已被exist()取代,并已被删除。
新代码应显示为
MATCH (a:Person),
(b:Country)
WHERE EXISTS (a.id) AND EXISTS (b.id) AND a.id=b.id
CREATE (a)-[:LIVES]->(b);