无法加载 NODE 4:db8c4fa***.. 当我使用 CALL apoc.create.vNode 时出现错误

问题描述 投票:0回答:1

这是一个找到模式、创建虚拟节点,然后创建与真实节点的关系的密码。

MATCH (account:Account:Iam)-[:DATE]->(date:Date)-[:ACTED]-(start_log:Log)-[:ACTED*1..]->(end_log:Log)-[:DETECTED]->(rule:Rule)
WHERE account.name = 'ar_hk'

WITH account, date, start_log, end_log, rule

MATCH path=(start_log)-[:ACTED*]->(end_log)

WITH account, date, start_log, end_log, rule, path

WITH account, date, start_log, end_log, rule, path,
     nodes(path) AS all_nodes

WITH account, date, start_log, end_log, rule, path, all_nodes,
     all_nodes[0] AS virtual_start,
     all_nodes[-1] AS virtual_end

WITH account, date, start_log, end_log, rule, virtual_start, virtual_end, length(path) AS path_length

CALL apoc.create.vNode(['Analysis'], {path_length: path_length}) YIELD node AS virtual_analysis

CREATE (virtual_start)-[:VIRTUAL_START]->(virtual_analysis)
CREATE (virtual_analysis)-[:VIRTUAL_END]->(virtual_end)

RETURN account, date, start_log, end_log, rule, virtual_analysis

出现错误“无法加载 NODE 4:db8c4fa9-255d-4df3-a0e1-0818e92d3b53:-2369”。

这是我的第二个密码:

MATCH (account:Account:Iam)-[:DATE]->(date:Date)-[:ACTED]-(start_log:Log)-[:ACTED*1..]->(end_log:Log)-[:DETECTED]->(rule:Rule)
WHERE account.name = 'ar_hk'

WITH account, date, start_log, end_log, rule

MATCH path=(start_log)-[:ACTED*]->(end_log)

WITH account, date, start_log, end_log, rule, path

WITH account, date, start_log, end_log, rule, path,
     nodes(path) AS all_nodes

WITH account, date, start_log, end_log, rule, path, all_nodes,
     all_nodes[0] AS virtual_start,
     all_nodes[-1] AS virtual_end

CALL apoc.create.vNode(['Analysis'], {path_length: length(path)}) YIELD node as virtual_analysis

WITH account, date, start_log, end_log, rule, virtual_start, virtual_analysis, virtual_end

CREATE (virtual_start)-[:START]->(virtual_analysis)-[:END]->(virtual_end)

RETURN account, date, start_log, end_log, rule, virtual_analysis

但是,错误“无法加载 NODE 4:db8c4fa9-255d-4df3-a0e1-0818e92d3b53:-2369”仍然出现。

我做错了什么?

之前已经创建过类似的问题,但我认为没有任何关于虚拟节点和虚拟关系的问题。

neo4j cypher neo4j-apoc
1个回答
0
投票

您无法使用真实关系将真实节点与虚拟节点连接起来(请参阅文档中的第 3 段)。

但是你可以将它与虚拟关系联系起来:

CALL apoc.create.vRelationship(virtual_start, 'VIRTUAL_START', {}, virtual_analysis)
CALL apoc.create.vRelationship(virtual_analysis, 'VIRTUAL_END', {}, virtual_end)

有关更多信息,请查看 apoc.create.vRelationship 上的文档

© www.soinside.com 2019 - 2024. All rights reserved.