首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Neo4j触发器内创建apoc过程时出现apoc语法异常

在Neo4j触发器内创建apoc过程时出现apoc语法异常
EN

Stack Overflow用户
提问于 2020-07-15 01:35:13
回答 1查看 63关注 0票数 0

我正在apoc触发器中创建apoc过程。日志中的错误显示如下

“org.neo4j.exceptions.SyntaxException:未定义变量名称(第1行,第26列(偏移量: 25)) "MATCH(p1:SPerson { node:node.name}) CREATE (P1)-:Enrolled>(C)”

我的apoc触发器代码

代码语言:javascript
复制
 CALL apoc.trigger.add('loadEnrollments',   
"UNWIND apoc.trigger.nodesByLabel($assignedLabels, 'Enrollment') AS node
 MERGE (p1:SPerson { name: node.name, cell: node.cell, created_at: node.created_at})
 WITH p1, node
 MATCH (c:Course {name: 'Paradigm Shifting 101'})
 MATCH (n:SPerson)
 WITH p1, node, COUNT(n) as size
 CALL apoc.do.when(
 size>3,'MERGE (p1)-[:Waitlist]->(c)',
 'MATCH(p1:SPerson { name: node.name}) CREATE (p1)-[:Enrolled]->(c)') YIELD value
 DETACH DELETE node", 
 { phase: 'after' });
EN

回答 1

Stack Overflow用户

发布于 2020-07-15 02:28:17

对于您直接提出的问题,您需要将node传递给apoc.do.when,以便它的内部查询可以访问它。

但是,实际上,您应该更改查询,以便内部查询甚至不需要执行MATCH

代码语言:javascript
复制
CALL apoc.trigger.add(
  'loadEnrollments',   
  "UNWIND apoc.trigger.nodesByLabel($assignedLabels, 'Enrollment') AS node
   MERGE (p1:SPerson { name: node.name, cell: node.cell, created_at: node.created_at})
   WITH p1, node
   MATCH (c:Course {name: 'Paradigm Shifting 101'})
   MATCH (n:SPerson)
   WITH p1, c, node, COUNT(n) as size
   CALL apoc.do.when(
     size>3,
     'MERGE (p1)-[:Waitlist]->(c)',
     'MERGE (p1)-[:Enrolled]->(c)',
     {p1: p1, c: c}
   ) YIELD value
   DETACH DELETE node", 
   { phase: 'after' }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62900832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档