删除关系后如何返回节点和关系的值
暗号:
MATCH (p:Person)-[t:LIKED]->(a:Post) WHERE p.identity='kOo08cpMoYPWwnwB4XMZ3CbTRcO2' AND a.uuid='b60f773d-6d85-48bc-9900-8037c4b2c0b2' DELETE t WITH p,a MATCH (a)<-[l:LIKED]-() RETURN count(l) AS likes, exists((p)-[:LIKED]->(a)) AS liked, a.uuid AS uuid 上面的查询总是返回 []
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Cypher查询语言中,当你删除关系后想要同时返回节点和已删除关系的信息,你需要在DELETE
操作之前保留这些信息。你的查询尝试这样做,但似乎有一个小错误:多余的(a)(a)) AS liked
部分,这可能是你想表达收集与节点a
关联的其他关系的操作,但语法不正确。基于你的需求,我假设你希望获取与节点p
和a
相关的所有信息以及被删除的关系t
的信息(尽管在实际中,一旦删除,关系t
的具体属性将不可直接访问,但我们可以间接通过参与节点了解情况)。
修正后的查询示例可能如下:
MATCH (p:Person)-[t:LIKED]->(a:Post)
WHERE p.identity='kOo08cpMoYPWwnwB4XMZ3CbTRcO2' AND a.uuid='b60f773d-6d85-48bc-9900-8037c4b2c0b2'
WITH p, a, t // 保留p、a、t以供后续使用
DELETE t // 删除匹配到的关系
RETURN p, a, COUNT(t) AS deletedRelationshipCount, a.uuid AS postUuid
这个查询首先找到满足条件的节点p
和a
之间存在的LIKED
关系t
,然后删除这些关系,并最后返回节点p
和a
的所有信息,同时返回被删除关系的数量(在这个特定场景下通常为1,因为是基于精确匹配删除),以及帖子的UUID作为确认。
请注意,由于Neo4j的事务性特性,你无法直接返回被删除关系的详细属性,因为它们在事务中已被标记为删除。但是,通过计数或关联节点的状态,你可以间接了解到操作的影响。