Neo4J - 在合并中有条件地设置值
Neo4J - Conditionally setting value in merge
在 Neo4J 中,我使用 "merge" 创建节点,例如 -
MERGE (p: Person {id: 'testId1234' }) RETURN p
现在如果理解正确的话,如果不存在 ID 'testId1234' 的节点 P,将创建一个节点 P。现在我想设置一个 属性 eligible_for_vote
仅当此人的年龄超过 18 岁时,我该怎么做?
当我在图表中插入一个节点时,我确实可以访问他们的年龄。但我不知道如何有条件地使用 SET
和 MERGE
简而言之,我正在尝试做这样的事情 -
MERGE (p: Person {id: 'testId1234'})
SET
if age >= 18
p.eligible_for_vote = true
end
p.age = 18
RETURN p
有什么建议吗?
不完全确定这是否符合您的所有要求,但希望它在任何情况下都能有所帮助。
MERGE (p: Person {id: 'testId1234'})
ON CREATE SET p.age = 18, p.eligible_for_vote = true
ON MATCH SET p.eligible_for_vote = p.age >= 18
RETURN p
有条件地调用 ON MATCH 和 ON CREATE 子句,具体取决于 MERGE 是否导致创建新节点或匹配现有节点,但您只能对它们中的任何一个使用 SET 操作
在 Neo4J 中,我使用 "merge" 创建节点,例如 -
MERGE (p: Person {id: 'testId1234' }) RETURN p
现在如果理解正确的话,如果不存在 ID 'testId1234' 的节点 P,将创建一个节点 P。现在我想设置一个 属性 eligible_for_vote
仅当此人的年龄超过 18 岁时,我该怎么做?
当我在图表中插入一个节点时,我确实可以访问他们的年龄。但我不知道如何有条件地使用 SET
和 MERGE
简而言之,我正在尝试做这样的事情 -
MERGE (p: Person {id: 'testId1234'})
SET
if age >= 18
p.eligible_for_vote = true
end
p.age = 18
RETURN p
有什么建议吗?
不完全确定这是否符合您的所有要求,但希望它在任何情况下都能有所帮助。
MERGE (p: Person {id: 'testId1234'})
ON CREATE SET p.age = 18, p.eligible_for_vote = true
ON MATCH SET p.eligible_for_vote = p.age >= 18
RETURN p
有条件地调用 ON MATCH 和 ON CREATE 子句,具体取决于 MERGE 是否导致创建新节点或匹配现有节点,但您只能对它们中的任何一个使用 SET 操作