neo4j创建子节点并将其链接到另一个子节点

马克酮

意向:

我想使用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)
  )

问题描述:

如果我多次运行查询,则会发生以下情况:

  1. 创建一个新节点
  2. 创建一个新节点并将其与上一个节点链接
  3. 创建2个新节点,并将其中一个链接到现有节点以及新创建的节点。我期望它仅创建1个节点并将其链接到所有其他节点。
  4. 创建4个新节点,并将其中一个连接到现有节点,并将它们作为链连接。我期望仅创建1个节点并将其链接到所有其他节点。

...

我不明白的是为什么要创建许多新节点?在中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)
)

为什么您的查询创建重复项...

  1. 第一次运行可选匹配项时,没有子项匹配,因此您创建了一个新的子节点。
  2. 第二次运行它时,可选匹配项会找到您刚刚创建的孩子,然后创建另一个孩子
  3. 它第三次在两行中找到两个先前的子级,并且由于您没有将它们收集到单个行中,因此您的create statemetn被称为两次。现在有四个孩子,因此下一次创建将被调用四次。
  4. 因为没有子节点的集合,所以foreach一次只能在一个子节点上一次运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

neo4j cypher查询以删除中间节点并将其所有父节点连接到子节点

来自分类Dev

Neo4j匹配与一个或另一个节点相关的节点

来自分类Dev

如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

来自分类Dev

Neo4j Cypher:按与另一个节点的关系对节点进行分组

来自分类Dev

Neo4j密码使用ALL关系获取与另一个节点相关的节点

来自分类Dev

使用嵌套的For Each和If从另一个子节点返回节点值

来自分类Dev

我如何通过另一个子节点从父节点获取子节点内文

来自分类Dev

Neo4j:仅返回图中的第一个公共节点,丢弃公共子节点

来自分类Dev

Neo4j - 从一个节点遍历到另一个由父节点间接连接的节点

来自分类Dev

xQuery更改节点层次结构(从一个节点中删除一个子节点并将其作为同级节点返回)

来自分类Dev

如何根据员工匹配从父节点复制子节点并将其保留在另一个父节点中?

来自分类Dev

如何返回用 XSLT 中另一个子节点的数据修改的子节点?

来自分类Dev

XLST:将ID从一个子节点复制到另一个子节点

来自分类Dev

在XSLT中,如何根据另一个子节点的值显示一个子节点的值

来自分类Dev

如何从 Groovy readyAPI 中另一个子值偏好的父级获取子节点值

来自分类Dev

如何获取在neo4j中创建的最后一个节点?

来自分类Dev

Neo4J:找到一个任意深度的子图,该子图具有通过给定关系集连接的节点?

来自分类Dev

如何将存储过程结果转换为xml并将其用作另一个proc结果中的子节点

来自分类Dev

SpriteKit-检测节点是否击中另一个节点的子节点并执行操作

来自分类Dev

将节点链接到另一个节点SpriteKit-Swift

来自分类Dev

对Neo4J Cypher 2.0中的多个节点/边缘创建提出一个MERGE请求还是将其拆分为事务更好?

来自分类Dev

对Neo4J Cypher 2.0中的多个节点/边缘创建提出一个MERGE请求,或者将其拆分为事务会更好吗?

来自分类Dev

使用lxml解析XML,当存在另一个子节点时无法获取文本

来自分类Dev

在 Neo4j 中,我们如何使用 graphql 将生成查询后获得的键值对存储到另一个现有节点中?

来自分类Dev

使用XPath获取节点的每个子节点的第一个子节点

来自分类Dev

限制Neo4j中的子节点性能

来自分类Dev

Nginx-创建一个链接到另一个(本地)网站的子域

来自分类Dev

从另一个子执行子

来自分类Dev

Neo4j.rb:在将一个节点替换为另一个节点之前,先转移所有关系

Related 相关文章

  1. 1

    neo4j cypher查询以删除中间节点并将其所有父节点连接到子节点

  2. 2

    Neo4j匹配与一个或另一个节点相关的节点

  3. 3

    如果属性存在,则 Neo4J 合并节点并创建另一个具有关系的节点

  4. 4

    Neo4j Cypher:按与另一个节点的关系对节点进行分组

  5. 5

    Neo4j密码使用ALL关系获取与另一个节点相关的节点

  6. 6

    使用嵌套的For Each和If从另一个子节点返回节点值

  7. 7

    我如何通过另一个子节点从父节点获取子节点内文

  8. 8

    Neo4j:仅返回图中的第一个公共节点,丢弃公共子节点

  9. 9

    Neo4j - 从一个节点遍历到另一个由父节点间接连接的节点

  10. 10

    xQuery更改节点层次结构(从一个节点中删除一个子节点并将其作为同级节点返回)

  11. 11

    如何根据员工匹配从父节点复制子节点并将其保留在另一个父节点中?

  12. 12

    如何返回用 XSLT 中另一个子节点的数据修改的子节点?

  13. 13

    XLST:将ID从一个子节点复制到另一个子节点

  14. 14

    在XSLT中,如何根据另一个子节点的值显示一个子节点的值

  15. 15

    如何从 Groovy readyAPI 中另一个子值偏好的父级获取子节点值

  16. 16

    如何获取在neo4j中创建的最后一个节点?

  17. 17

    Neo4J:找到一个任意深度的子图,该子图具有通过给定关系集连接的节点?

  18. 18

    如何将存储过程结果转换为xml并将其用作另一个proc结果中的子节点

  19. 19

    SpriteKit-检测节点是否击中另一个节点的子节点并执行操作

  20. 20

    将节点链接到另一个节点SpriteKit-Swift

  21. 21

    对Neo4J Cypher 2.0中的多个节点/边缘创建提出一个MERGE请求还是将其拆分为事务更好?

  22. 22

    对Neo4J Cypher 2.0中的多个节点/边缘创建提出一个MERGE请求,或者将其拆分为事务会更好吗?

  23. 23

    使用lxml解析XML,当存在另一个子节点时无法获取文本

  24. 24

    在 Neo4j 中,我们如何使用 graphql 将生成查询后获得的键值对存储到另一个现有节点中?

  25. 25

    使用XPath获取节点的每个子节点的第一个子节点

  26. 26

    限制Neo4j中的子节点性能

  27. 27

    Nginx-创建一个链接到另一个(本地)网站的子域

  28. 28

    从另一个子执行子

  29. 29

    Neo4j.rb:在将一个节点替换为另一个节点之前,先转移所有关系

热门标签

归档