Neo4j 密码中删除的 If 语句
If statement for deleting in neo4j cypher
我试图仅基于包含相同值的两个节点执行分离删除,并且这两个节点接收参数化值。一旦这个条件成立,就应该 运行 附加条款。
我浏览了 Neo4j 社区页面并尝试了 FOREACH 方法 (https://community.neo4j.com/t/how-to-check-if-else-in-query/1533)。但是,根据我的研究,您似乎只限于只写子句。下面的代码解释了我想要实现的目标,我只想在两个用户节点相同时执行删除操作。我还尝试了可选匹配,例如
OPTIONAL MATCH (user: User)-[:CREATED]->(moment:Moment{GUID: $guid }) WHERE user.GUID = $userId
但是,我以某种方式最终删除了一系列节点并最终撤消了更改。
MATCH (user: User)-[:CREATED]->(moment:Moment{GUID: $guid })
MATCH (authUser: User{ GUID: $userId })
IF user.GUID == authUser.GUID:
OPTIONAL MATCH (image:Image)-[:IS_ABOUT]->(moment)
WITH image, moment, moment.GUID AS momentGuid, image.url AS url, image.GUID AS guid, image.filename AS filename
DETACH DELETE moment, image
RETURN COLLECT({
moment: momentGuid,
url: url,
guid: guid,
filename: filename
}) AS data
理想情况下,if 语句下的代码应该只在条件满足时才执行。任何建议将不胜感激,
谢谢!
如果 MATCH
子句与其 WHERE
子句(如果有)不匹配,则整个查询将中止。
因此,您可以替换为:
MATCH (user: User)-[:CREATED]->(moment:Moment{GUID: $guid })
MATCH (authUser: User{ GUID: $userId })
IF user.GUID == authUser.GUID:
...
使用这个(简化的)片段:
MATCH
(user:User {GUID: $userId})-[:CREATED]->(moment:Moment {GUID: $guid}),
(authUser:User {GUID: $userId})
...
不清楚您查询的其余部分试图做什么,所以我不对此发表评论。
我试图仅基于包含相同值的两个节点执行分离删除,并且这两个节点接收参数化值。一旦这个条件成立,就应该 运行 附加条款。
我浏览了 Neo4j 社区页面并尝试了 FOREACH 方法 (https://community.neo4j.com/t/how-to-check-if-else-in-query/1533)。但是,根据我的研究,您似乎只限于只写子句。下面的代码解释了我想要实现的目标,我只想在两个用户节点相同时执行删除操作。我还尝试了可选匹配,例如
OPTIONAL MATCH (user: User)-[:CREATED]->(moment:Moment{GUID: $guid }) WHERE user.GUID = $userId
但是,我以某种方式最终删除了一系列节点并最终撤消了更改。
MATCH (user: User)-[:CREATED]->(moment:Moment{GUID: $guid })
MATCH (authUser: User{ GUID: $userId })
IF user.GUID == authUser.GUID:
OPTIONAL MATCH (image:Image)-[:IS_ABOUT]->(moment)
WITH image, moment, moment.GUID AS momentGuid, image.url AS url, image.GUID AS guid, image.filename AS filename
DETACH DELETE moment, image
RETURN COLLECT({
moment: momentGuid,
url: url,
guid: guid,
filename: filename
}) AS data
理想情况下,if 语句下的代码应该只在条件满足时才执行。任何建议将不胜感激,
谢谢!
如果 MATCH
子句与其 WHERE
子句(如果有)不匹配,则整个查询将中止。
因此,您可以替换为:
MATCH (user: User)-[:CREATED]->(moment:Moment{GUID: $guid })
MATCH (authUser: User{ GUID: $userId })
IF user.GUID == authUser.GUID:
...
使用这个(简化的)片段:
MATCH
(user:User {GUID: $userId})-[:CREATED]->(moment:Moment {GUID: $guid}),
(authUser:User {GUID: $userId})
...
不清楚您查询的其余部分试图做什么,所以我不对此发表评论。