Neo4j执行DETACH DELETE后如何返回成功删除的节点名称
实现方法
你不需要修改事务提交的逻辑,只需要调整Cypher查询,末尾增加RETURN子句就能拿到被删除节点的名称,修改后的查询如下:
MATCH (p:Post), (u:User) WHERE p.name IN $post_names AND u.id = 1 AND (p)-[:POST_OWNED_BY]->(u) DETACH DELETE p RETURN collect(DISTINCT p.name) AS successfully_deleted_posts
你可以把要传入的多个post名称作为参数$post_names传入,执行查询后直接从结果中读取successfully_deleted_posts字段,就能得到所有成功删除的节点名称列表。
相关语法依据
DETACH DELETE操作执行后,Cypher仍然允许访问被删除节点的属性用于返回,这是Cypher的标准内置能力,所有兼容Cypher规范的Neo4j版本都支持- 你使用的
usingExistingOrNewTransaction方法会完整返回Cypher查询的结果集,只要查询中声明了返回字段,就能正常获取返回值,无需额外调整事务配置 - 用参数化形式传入post名称列表,既可以避免Cypher注入风险,也不需要动态拼接查询字符串,适配任意数量的post名称传入场景
内容的提问来源于stack exchange,提问作者user11333043
相关产品推荐
相关产品推荐

