[英]Neo4j relate nodes by same property
我有一个Neo4J DB并正在运行,并且当前有2个标签:Company和Person。
每个公司节点都有一个名为old_id的属性。
每个人节点都有一个称为公司的属性。
现在,我想在old_id和company拥有相同价值的每个Person与每个Person之间建立关系。
已经尝试了以下建议: 在Neo4J中 查找具有相同属性的节点, 在Neo4J中 查找具有相同属性的节点
按照我尝试的第一个链接:
MATCH (p:Person)
MATCH (c:Company) WHERE p.company = c.old_id
CREATE (p)-[:BELONGS_TO]->(c)
导致根本没有任何变化,正如我尝试的第二个链接所建议的那样:
START
p=node(*), c=node(*)
WHERE
HAS(p.company) AND HAS(c.old_id) AND p.company = c.old_id
CREATE (p)-[:BELONGS_TO]->(c)
RETURN p, c;
导致运行时间> 36小时。 现在,我不得不中止该命令,而不知道该命令是否最终会起作用。 因此,我想问一下它在理论上是否正确,我只是不耐烦(数据集很大tbh)。 或者,如果有更有效的方法可以做到这一点。
这个简单的控制台显示您的原始查询可以正常工作,并假设:
您的数据实际上具有分别具有匹配的company
和old_id
值的Person
和Company
节点。
请注意,为了匹配,这些值必须具有相同的类型(例如,两个都是字符串,或者两个都是整数,等等)。
因此,请检查#1和#2是否正确。
根据要分页的数据集的大小
create constraint on (c:Company) assert c.old_id is unique;
MATCH (p:Person)
WITH p SKIP 100000 LIMIT 100000
MATCH (c:Company) WHERE p.company = c.old_id
CREATE (p)-[:BELONGS_TO]->(c)
RETURN count(*);
只需将跳跃值从零增加到您的总人数即可,步长为10万。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.