Cypher 初始化器

APOC 允许您在数据库初始化完成后选择性地运行 Cypher 命令。这可用于确保在启动时创建索引和约束。

初始化器通过 配置选项 进行定义,并遵循以下命名约定

apoc.initializer.<database_name>.<identifier> = <some cypher string>

对于每个数据库,所有的初始化器字符串都按 <identifier>(标识符)排序,并且每个初始化器都在单独的事务中执行。如果您给定的数据库只有一个初始化器,则可以省略 <identifier>

例如,如果您想要

  • 在 System 数据库中创建另一个数据库用户。

  • 在默认数据库 neo4j 中为 :Person 创建索引。

  • 在默认数据库 neo4j 中添加两个 :Person 节点。

可以通过以下方式实现

apoc.initializer.system=CREATE USER dummy IF NOT EXISTS SET PASSWORD 'abc'
apoc.initializer.neo4j.0=CREATE INDEX person_index IF NOT EXISTS FOR (p:Person) ON (p.name)
apoc.initializer.neo4j.1=MERGE (:Person{name:'foo'})
apoc.initializer.neo4j.2=MERGE (:Person{name:'bar'})

Cypher 初始化器会在数据库和 dbms 的每次重启时运行。因此,建议使用 IF NOT EXISTSMERGE 等结构,使 Cypher 命令具有幂等性。