开发者社区 问答 正文

在neo4j中删除关系后如何返回值

删除关系后如何返回节点和关系的值

暗号:

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 上面的查询总是返回 []

展开
收起
被纵养的懒猫 2019-09-30 14:56:42 555 分享 版权
阿里云 AI 助理回答

在Cypher查询语言中,当你删除关系后想要同时返回节点和已删除关系的信息,你需要在DELETE操作之前保留这些信息。你的查询尝试这样做,但似乎有一个小错误:多余的(a)(a)) AS liked部分,这可能是你想表达收集与节点a关联的其他关系的操作,但语法不正确。基于你的需求,我假设你希望获取与节点pa相关的所有信息以及被删除的关系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

这个查询首先找到满足条件的节点pa之间存在的LIKED关系t,然后删除这些关系,并最后返回节点pa的所有信息,同时返回被删除关系的数量(在这个特定场景下通常为1,因为是基于精确匹配删除),以及帖子的UUID作为确认。

请注意,由于Neo4j的事务性特性,你无法直接返回被删除关系的详细属性,因为它们在事务中已被标记为删除。但是,通过计数或关联节点的状态,你可以间接了解到操作的影响。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: