意向:
我想使用neo4j将子节点添加到父节点。如果还有其他孩子,我必须将孩子与所有兄弟姐妹联系起来
我试过的
假设我们肯定知道Parent存在。我们要在其下添加通用节点。我得到了,并从这里修改了它:
match(tbl: Parent {name: "existing_node"})
optional match(c: Child {name: "generic_node"})
create(n: Child{name: "generic_node"})
FOREACH (o IN CASE WHEN c IS NOT NULL THEN [c] ELSE [] END |
CREATE (o)-[:SIBLING]->(n)
CREATE (n)-[:SIBLING]->(o)
)
问题描述:
如果我多次运行查询,则会发生以下情况:
...
我不明白的是为什么要创建许多新节点?在中FOREACH
,我认为这(n)
将指向同一新创建的节点,而不是创建新节点。
我认为这可能会实现您想要实现的目标
// Find the parent
MATCH (tbl:Parent {name: "existing_node"})
// Optionally fin existing children and put them in a collection
OPTIONAL MATCH (tbl)<-[:CHILD]-(c:Child {name: "generic_node"})
WITH tbl, collect(c) AS children
// create the new child and the relationship to the found parent
CREATE (n:Child {name: "generic_node"})
CREATE (tbl)<-[:CHILD]-(n)
// create the sibling relationships to any pre-existing children
FOREACH (c IN children |
CREATE (c)-[:SIBLING]->(n)
)
为什么您的查询创建重复项...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句