0

我正在测试neo4j-driver 包以通过 JavaScript/TypeScript 运行 Cypher 查询。

我可以很好地运行大多数查询,但是每次我尝试运行命令时,MATCH (n) DETACH DELETE n我的程序都会一直挂起,什么也没有发生。

我的代码:

// main.ts

import neo4j from "neo4j-driver"

const main = async () => {
  const driver = neo4j.driver("bolt://localhost:7687",
    neo4j.auth.basic("neo4j", "telmo"))

  const session = driver.session()

  console.log("This command works fine")
  await session.run(`CREATE (n:Person {name: "Bob"}) RETURN n.name`)

  console.log("This one does not")
  await session.run("MATCH (n) DETACH DELETE n")

  console.log("The code never even gets here")

  session.close()
  driver.close()
}

main()

有谁知道为什么程序会挂起,MATCH (n) DETACH DELETE n我该怎么做才能修复它?请注意,我的数据库仅用于测试并且具有非常少量的数据。

4

1 回答 1

1

当您执行 match(n) detach delete n ..它加载图中的所有关系和节点时,您的堆大小可能不足以一次加载所有数据。尝试以下查询,而不是按批处理方式完成工作, CALL apoc.periodic.iterate( "MATCH (n) RETURN n", "DETACH DELETE n", {batchSize:10000, parallel:false})

在此处阅读有关 apoc.iterate 的更多信息http://neo4j-contrib.github.io/neo4j-apoc-procedures/3.5/cypher-execution/commit-batching/

于 2019-12-29T13:47:01.337 回答