gpt4 book ai didi

neo4j - 如何批处理 Neo4j Cypher 查询

转载 作者:行者123 更新时间:2023-12-03 12:23:27 24 4
gpt4 key购买 nike

所以我有超过 130M 的一种类型的节点和 500K 的另一种类型的节点,我试图在它们之间创建如下关系:

MATCH (p:person)
MATCH (f:food) WHERE f.name=p.likes
CREATE (p)-[l:likes]->(f)

问题是创建了 130M 的关系,我想以与 PERIODIC COMMIT 类似的方式来做。使用时 LOAD CSV
我的查询类型有这样的功能吗?

最佳答案

就在这里。您将需要 APOC Procedures library已安装 ( download here )。您将在 Job Management 中使用 apoc.periodic.commit() 函数部分。从文档:

CALL apoc.periodic.commit(statement, params) - repeats a batch update statement until it returns 0, this procedure is blocking



您将把它与 LIMIT 子句结合使用,将限制值作为参数传递。

但是,为了获得最佳结果,您需要确保您的连接数据(我认为是 f.name)具有索引或唯一约束以大量减少时间。

以下是您可以如何使用它(假设从您的示例中可以看出一个人只喜欢一种食物,并且我们应该仅将其应用于 :persons 尚未建立关系集):
CALL apoc.periodic.commit("
MATCH (p:person)
WHERE p.likes IS NOT NULL
AND NOT (p)-[:likes]->(:food)
WITH p LIMIT {limit}
MATCH (f:food) WHERE p.likes = f.name
CREATE (p)-[:likes]->(f)
RETURN count(*)
", {limit: 10000})

关于neo4j - 如何批处理 Neo4j Cypher 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com