首页 > 解决方案 > 批量密码查询的意外影响

问题描述

我有一个批处理查询,我正在批量执行并传递一个$attribs参数。

$attribs是:

[{
  attribs: [{row_attribs:{attrKey:"attrValue"}}],
  match_crit:[ {matchKey:"matchVal"}]
}]

询问:

UNWIND $attribs AS attrib_dict
UNWIND attrib_dict.attribs as attrib_row
UNWIND attrib_dict.match_crit as match_row
CREATE (src:{src_ent})
SET src += attrib_row.row_attribs
WITH src, match_row
MATCH (to:Article} {{name:match_row.matchKey})
CREATE (src)-[:REL]->(to)

我分批编写 250 个,但每批都创建了 40k 个节点之类的东西(很多重复导致这个数字很大)。这怎么可能?这可能是因为我的查询中有多个 UNWIND 子句吗?我认为我在查询中处理参数的方式变得有些奇怪,但不想在没有目的或理解的情况下开始修改我的代码。

注意我通常会以更大的批次(appx 5k 个节点)写入,但遇到内存不足错误,我猜节点创建的这种爆炸是导致该错误的原因。

标签: neo4jcypher

解决方案


推荐阅读