gpt4 book ai didi

neo4j - 获取没有特定关系的节点(cypher/neo4j)

转载 作者:行者123 更新时间:2023-12-04 12:40:56 31 4
gpt4 key购买 nike

我有以下两种节点类型:

c:City {name: 'blah'}
s:Course {title: 'whatever', city: 'New York'}

想要创建这个:
(s)-[:offered_in]->(c)

我正在尝试获取与城市无关的所有类(class),并创建与城市的关系(如果不存在,则创建城市)。但是,问题是我的数据集大约有500万个节点,任何查询我都会超时(除非我以10k的增量递增)。

...有人有什么建议吗?

编辑:

这是对我现在正在运行的作业的查询(必须以10k块(百万计)完成,因为它要花几分钟的时间。如果不存在,则会创建城市):
match (j:Job)
where not has(j.merged) and has(j.city)
WITH j
LIMIT 10000
MERGE (c:City {name: j.city})
WITH j, c
MERGE (j)-[:in]->(c)
SET j.merged = 1
return count(j)

(目前尚不知道一种过滤掉已经匹配的方法的好方法,因此尝试通过使用我已经拥有索引的自定义“合并”属性对其进行标记来做到这一点)

最佳答案

500000是几个节点,在另一个问题上,您建议90%的用户没有要在此处创建的关系,因此这将花费一些时间。如果没有更多关于系统的知识(规范,新设置,编程环境),并且在运行时(在旧数据或插入数据上)运行,这只是一个更简洁的解决方案的最佳猜测:

MATCH (j:Job)
WHERE NOT (j)-[:IN]->() AND HAS(j.city)
MERGE (c:City {name: j.city})
MERGE (j)-[:IN]->(c)
return count(j)

显然,您可以根据需要添加限制。

关于neo4j - 获取没有特定关系的节点(cypher/neo4j),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671475/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com