neo4j 如何正确使用apoc.periodic.repeat?

vbopmzt1  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(176)

我对Neo4j还很陌生。我尝试用apoc.periodic.repeat更新一个图表,但似乎不起作用。下面是一个模拟示例:

  • 我使用MERGE为几个国家/地区创建了节点(co:Country {id:#,大写:“首都”})
  • 然后我用MATCH(co:Country)MERGE(c:City {name:co.capital)

我创建了比城市更多的国家来测试apoc. periodic. repeat。然后我运行了以下代码:
呼叫apoc.定期.重复(“创建城市”,“匹配(公司:国家)合并(c:城市{名称:co.capital)",1)
这并没有创建带有City标签的新节点。这是result。我不知道为什么它在done下面显示“false”。有人能解释一下为什么这没有产生预期的结果吗?有没有其他方法来达到预期的结果?
编辑:事实证明,我使用它是正确的。我只是有一些apoc.periodic.iterate作业在后台运行,我猜,这些作业阻止了这个作业的运行,或者可能延迟了它。我运行:查询并杀死了所有现有的作业,然后这个作业按预期运行。

j2qf4p5b

j2qf4p5b1#

您可以考虑使用apoc.trigger.add
您首先需要在apoc.conf文件中启用触发器:apoc.trigger.enabled=true
然后,您可以创建触发器,如下所示。

CALL apoc.trigger.add(
  'create-cities',
  'UNWIND [co IN $createdNodes WHERE id(co) > 0 AND co:Country] AS co
  MERGE (c:City {name: co.capital})',
  {}
);

为了进行测试,下面的查询应该触发Vluatchuk:City节点的创建。

MERGE (co:Country {id: "Elbonia", capital: "Vluatchuk"})

相关问题