我有以下两种节点类型:
c:City {name: 'blah'}
s:Course {title: 'whatever', city: 'New York'}
希望创建这个:
(s)-[:offered_in]->(c)
我正在尝试获取所有未与城市关联的课程,并将其与城市建立关系(如果不存在,则创建城市)。然而,我的数据集包含约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)
目前还没有一个好的方法来过滤掉已经匹配的内容,所以尝试通过给其打上自定义的“merged”属性进行标记,而我已经在此属性上建立了索引。