(:Label1 {emp_id: 1, name:"abc"})
(:Label1 {emp_id: 2, name:"xyz"})
(:Label1 {emp_id: 3, name:"pqr"})
INDEX ON :Label1(emp_id)
(:Label2 {emp_id: 1, car_name:"A"})
(:Label2 {emp_id: 1, car_name:"B"})
(:Label2 {emp_id: 1, car_name:"C"})
(:Label2 {emp_id: 2, car_name:"A"})
(:Label2 {emp_id: 2, car_name:"D"})
(:Label2 {emp_id: 3, car_name:"B"})
(:Label2 {emp_id: 3, car_name:"F"})
问题:我只需要保留 Label1 并且需要合并 Label1 中的键“car_name”。怎么做 ?
注:两个标签中的节点数都是百万,Label2节点几乎是Label1的两倍
我将在您的位置上创建一个新标签 Car,其中包含有关 car_name 的信息,并将连接到标记为 Label1 的节点。稍后我将删除所有 Label2 节点,因为您不再需要它们了。
由于您有数百万个节点,因此最好使用 apoc.periodic.iterate 进行批处理。
CALL apoc.periodic.iterate(
"MATCH (l:Label1), (l2:Label2)
WHERE l.emp_id = l2.emp_id return l,l2",
"MERGE (c:Car{car_name: l2.car_name})
MERGE (l)-[:HAS_CAR]->(c)",
{batchSize:5000, iterateList:true})
现在删除所有带有 label2 的节点
CALL apoc.periodic.iterate(
'MATCH (l:Label2) RETURN l',
'DETACH DELETE l',
{batchSize:1000,parallel:true})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句