我有以下两个节点类型:获取不具有一定的关系(CYPHER/Neo4j的)节点
c:City {name: 'blah'}
s:Course {title: 'whatever', city: 'New York'}
展望创建此:
(s)-[:offered_in]->(c)
我试图让所有不与城市联系并创建与城市的关系的课程(如果不存在,则创建城市)。然而,问题是我的数据集大约有500万个节点,而且我的任何查询都超时(除非我的增量为10k)。
......有人有什么建议吗?
编辑:
这里是我现在正在运行的任务查询(即在10K块做(出数以百万计),因为它需要几分钟的时间,因为它是没有按是否创建城市。 “T存在):
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)
(现在不知道过滤掉已经匹配的那些一个好办法,所以试图做到这一点通过自定义标记是‘合并’我已经有一个属性index on)
你能分享你目前正在尝试的吗? – JohnMark13 2014-09-04 17:22:04
我不认为这可以在没有更多上下文的情况下得到回答(并且将您的问题与您的更新相匹配,我假设工作==课程和== offered_in)。您是使用现有数据进行操作还是这是批量导入?你能告诉我们关于你的系统设置的一些信息吗?而不是'合并',你可以使用WHERE NOT(j) - [:in] - >()。 – JohnMark13 2014-09-04 19:22:52
您是否通过浏览器界面看到超时? – 2014-09-04 21:40:41